Skip to main content
Glama
little2512
by little2512
mock-data.js7.3 kB
// 测试用的模拟数据 export const mockDocuments = { // 基本文本文档 basicText: { memoryKey: 'basic-text-doc', filePath: './tests/fixtures/documents/basic-text.docx', documentType: 'common-doc', textContent: '这是一个基本的测试文档。\n\nThis document contains both Chinese and English text.\n\n文档包含多种内容类型,用于测试文本提取功能。', expectedWords: ['这个', '基本', '测试', '文档', 'chinese', 'english', 'text', 'document'] }, // API文档 apiDoc: { memoryKey: 'api-endpoint-doc', filePath: './tests/fixtures/documents/api-documentation.docx', documentType: 'api-doc', textContent: 'API Endpoint Documentation\n\n# GET /api/users\n获取用户列表\n\n参数:\n- page: 页码 (默认: 1)\n- limit: 每页数量 (默认: 10)\n\n响应:\n```json\n{\n "users": [...],\n "total": 100,\n "page": 1\n}\n```', expectedWords: ['api', 'endpoint', 'documentation', 'get', 'users', '参数', '响应', 'json'], tablesCount: 2, imagesCount: 0 }, // UI组件文档 uiComponentDoc: { memoryKey: 'button-component-doc', filePath: './tests/fixtures/documents/ui-component-doc.docx', documentType: 'ui-component', textContent: 'Button Component Documentation\n\nProps:\n- type: "primary" | "secondary" | "danger"\n- size: "small" | "medium" | "large"\n- disabled: boolean\n- onClick: function\n\nExamples:\n```jsx\n<Button type="primary" size="large">Click me</Button>\n```', expectedWords: ['button', 'component', 'props', 'type', 'size', 'disabled', 'onclick', 'examples'], tablesCount: 1, imagesCount: 1 }, // 包含表格的文档 tableDoc: { memoryKey: 'table-test-doc', filePath: './tests/fixtures/documents/simple-table.docx', documentType: 'common-doc', textContent: '这是一个包含表格的文档。\n\n表格数据如下:', tables: [ { rows: [ ['姓名', '年龄', '城市'], ['张三', '25', '北京'], ['李四', '30', '上海'], ['王五', '28', '广州'] ] } ], expectedWords: ['表格', '姓名', '年龄', '城市', '张三', '李四', '王五'], tablesCount: 1 }, // 包含图片的文档 imageDoc: { memoryKey: 'image-test-doc', filePath: './tests/fixtures/documents/with-images.docx', documentType: 'common-doc', textContent: '这是一个包含图片的文档。', images: [ { filename: 'chart1.png', ocrText: '销售数据统计图表\n2024年度销售报告\nQ1: 100万\nQ2: 150万\nQ3: 200万\nQ4: 250万', size: 24576 }, { filename: 'screenshot.jpg', ocrText: '用户界面截图\n登录页面\n用户名: [输入框]\n密码: [输入框]\n[登录按钮] [忘记密码]', size: 15360 } ], expectedWords: ['销售', '数据', '统计', '图表', '用户', '界面', '截图', '登录'], imagesCount: 2 }, // 大文档(模拟) largeDoc: { memoryKey: 'large-test-doc', filePath: './tests/fixtures/documents/large-file.docx', documentType: 'common-doc', textContent: '这是一个大文档的示例内容。'.repeat(10000), // 模拟大文本 wordCount: 100000, // 模拟10万字 fileSize: 15 * 1024 * 1024, // 模拟15MB文件 expectedWords: ['这个', '大文档', '示例', '内容'] } }; // 测试搜索查询 export const searchQueries = { basic: [ { query: '文档', expectedResults: 5 }, { query: 'document', expectedResults: 3 }, { query: '测试', expectedResults: 4 }, { query: 'test', expectedResults: 2 }, { query: 'API', expectedResults: 1 }, { query: 'Button', expectedResults: 1 }, { query: '表格', expectedResults: 2 }, { query: '图片', expectedResults: 2 } ], complex: [ { query: 'API 文档', expectedResults: 1 }, { query: 'Button component', expectedResults: 1 }, { query: '用户界面', expectedResults: 1 }, { query: '销售数据', expectedResults: 1 }, { query: '测试 文档', expectedResults: 4 } ], edgeCases: [ { query: '', expectedResults: 0 }, { query: ' ', expectedResults: 0 }, { query: '不存在的关键词', expectedResults: 0 }, { query: 'a'.repeat(100), expectedResults: 0 } ] }; // 缓存测试数据 export const cacheTestData = { validEntries: [ { key: 'doc1_cache', data: { text: '这是缓存的文档内容', tables: [], images: [], metadata: { cachedAt: new Date().toISOString() } }, ttl: 3600 }, { key: 'doc2_cache', data: { text: '另一个缓存的文档', tables: [{ rows: [['表头1', '表头2'], ['数据1', '数据2']] }], images: [{ filename: 'image.png', ocrText: '图片文字' }], metadata: { cachedAt: new Date().toISOString() } }, ttl: 7200 } ], expiredEntries: [ { key: 'expired_doc', data: { text: '过期的缓存' }, ttl: -1 // 已过期 } ] }; // 错误测试用例 export const errorTestCases = { fileNotFound: { filePath: '/path/to/nonexistent/file.docx', expectedError: '文件不存在' }, invalidFormat: [ { filePath: 'document.txt', expectedError: '不支持的文件格式' }, { filePath: 'document.pdf', expectedError: '不支持的文件格式' }, { filePath: 'document.jpg', expectedError: '不支持的文件格式' } ], invalidParams: [ { tool: 'read_word_document', missingParam: 'filePath', expectedError: 'filePath是必需的参数' }, { tool: 'search_documents', missingParam: 'query', expectedError: 'query是必需的参数' }, { tool: 'get_stored_document', missingParam: 'memoryKey', expectedError: 'memoryKey是必需的参数' } ], invalidDocumentType: { documentType: 'invalid_type', expectedError: '无效的文档类型' } }; // 性能测试数据 export const performanceTestData = { processingTimes: { smallDoc: { maxTime: 1000, size: '100KB' }, mediumDoc: { maxTime: 3000, size: '1MB' }, largeDoc: { maxTime: 10000, size: '10MB+' } }, memoryUsage: { baseline: 50 * 1024 * 1024, // 50MB baseline maxIncrease: 200 * 1024 * 1024 // 200MB max increase }, cachePerformance: { hitTime: 10, // 10ms max for cache hit missTime: 100 // 100ms max for cache miss } }; // 配置测试数据 export const configTestData = { defaultConfig: { processing: { maxFileSize: 10485760, maxPages: 100, chunkSize: 1048576, parallelProcessing: true }, cache: { enabled: true, defaultTTL: 3600, checkPeriod: 600 }, ocr: { enabled: true, languages: ['chi_sim', 'eng'] } }, testConfigs: [ { name: 'disabled_cache', config: { cache: { enabled: false } }, expectedBehavior: '所有请求都直接处理,不使用缓存' }, { name: 'disabled_ocr', config: { ocr: { enabled: false } }, expectedBehavior: '图片只提取不进行OCR分析' }, { name: 'small_chunk_size', config: { processing: { chunkSize: 512 * 1024 } }, expectedBehavior: '使用更小的块处理大文档' } ] };

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/little2512/word-doc-mcp'

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