|
这个技能专门负责生成测试所需的Mock数据和Stub函数,帮助隔离测试环境并提高测试效率。
// 为模块生成Mock
await generateMock('src/api/userService', {
framework: 'vitest',
includeReturnValues: true
});
// 为特定函数生成Mock
await generateFunctionMock('fetchUserData', {
returnType: 'User',
async: true,
errorScenarios: true
});
await generateMock(target, {
framework: 'vitest',
mockType: 'auto', // 'auto' | 'partial' | 'full'
includeSpies: true,
generateTestData: true,
customReturnValues: {
'getUser': () => ({ id: 1, name: 'Test User' }),
'createUser': () => Promise.resolve({ success: true })
}
});
// Mock整个模块
jest.mock('{{modulePath}}', () => ({
{{#each exports}}
{{name}}: jest.fn(),
{{/each}}
}));
// Mock实现
{{#each exports}}
{{name}}.mockImplementation(({{
#if isAsync}}
{{#if hasParams}}
async ({ {{join params ", "}} }) => {
// Mock implementation
return {{defaultValue}};
}
{{else}}
async () => {
return {{defaultValue}};
}
{{/if}}
{{else}}
{{#if hasParams}}
({ {{join params ", "}} }) => {
// Mock implementation
return {{defaultValue}};
}
{{else}}
() => {
return {{defaultValue}};
}
{{/if}}
{{/if}}
}));
{{/each}}
// 在测试中使用
beforeEach(() => {
{{#each exports}}
{{name}}.mockClear();
{{/each}}
});
import { vi } from 'vitest';
// Mock整个模块
vi.mock('{{modulePath}}', () => ({
{{#each exports}}
{{name}}: vi.fn(),
{{/each}}
}));
// Mock实现
{{#each exports}}
export const {{name}} = vi.fn();
{{#if isAsync}}
{{name}}.mockResolvedValue({{defaultValue}});
{{else}}
{{name}}.mockReturnValue({{defaultValue}});
{{/if}}
{{/each}}