Skip to main content
Glama
cache.test.ts2.35 kB
/** * 任务缓存测试 */ import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest'; import { TaskCache } from '../collaboration/cache.js'; describe('TaskCache', () => { let cache: TaskCache; beforeEach(() => { cache = new TaskCache({ enabled: true, ttl: 1000 }); }); describe('基本操作', () => { it('应该存储和获取缓存', () => { cache.set('task1', 'result1'); expect(cache.get('task1')).toBe('result1'); }); it('应该返回 null 对于不存在的 key', () => { expect(cache.get('nonexistent')).toBeNull(); }); it('应该支持带上下文的缓存', () => { cache.set('task1', 'result1', 'context1'); cache.set('task1', 'result2', 'context2'); expect(cache.get('task1', 'context1')).toBe('result1'); expect(cache.get('task1', 'context2')).toBe('result2'); }); }); describe('禁用缓存', () => { it('禁用时不应该存储', () => { const disabledCache = new TaskCache({ enabled: false }); disabledCache.set('task1', 'result1'); expect(disabledCache.get('task1')).toBeNull(); }); }); describe('TTL 过期', () => { beforeEach(() => { vi.useFakeTimers(); }); afterEach(() => { vi.useRealTimers(); }); it('应该在 TTL 过期后返回 null', () => { cache.set('task1', 'result1'); expect(cache.get('task1')).toBe('result1'); // 前进 2 秒 vi.advanceTimersByTime(2000); expect(cache.get('task1')).toBeNull(); }); }); describe('clear', () => { it('应该清空所有缓存', () => { cache.set('task1', 'result1'); cache.set('task2', 'result2'); cache.clear(); expect(cache.get('task1')).toBeNull(); expect(cache.get('task2')).toBeNull(); }); }); describe('getStats', () => { it('应该返回缓存统计', () => { expect(cache.getStats().size).toBe(0); cache.set('task1', 'result1'); expect(cache.getStats().size).toBe(1); cache.set('task2', 'result2'); expect(cache.getStats().size).toBe(2); }); it('应该包含配置信息', () => { const stats = cache.getStats(); expect(stats.enabled).toBe(true); expect(stats.maxSize).toBeGreaterThan(0); }); }); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/7836246/claude-team-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server