我有以下文件:
示例函数.ts:
export default (x: number) => x * 2;
测试文件:
import sampleFunction from './sampleFunction';
export default () => {
const n = sampleFunction(12);
return n - 4;
};
测试文件.test.ts:
import testFile from './testFile';
const mockFn = jest.fn();
jest.mock('./sampleFunction', () => ({
__esModule: true,
default: mockFn,
}));
test('sample test', () => {
testFile();
expect(mockFn).toBeCalled();
});
运行testFile.test.ts
时,出现以下错误:
TypeError: (0 , _sampleFunction).default is not a function
当sampleFunction.ts
有一个默认的导出函数时,我如何用Jest模拟sampleFunction.ts
?
2条答案
按热度按时间f5emj3cl1#
模拟默认导出时,需要将
default
和__esModule
传递给jest:6rqinv9w2#
我也遇到了同样的问题,我发现使用jest.spyOn对我很有效,我还必须传入一个mockImplementation来防止真实的的函数被调用。