【发布时间】:2020-09-08 12:43:54
【问题描述】:
我在一个文件中有两个函数
file1.ts:
const function1 = () => {
return 123;
};
const function2 = () => {
return function1() + 2;
};
export { function1, function2 };
我正在使用 jest 为函数 2 编写单元测试。但我无法模拟函数 1
我刚刚尝试使用jest.spyOn 模拟function1
import * as helperFunctions from 'file1';
describe('test function2 ', () => {
let functionSpy: any;
beforeAll(() => {
functionSpy = jest.spyOn(helperFunctions, 'function1 ');
});
afterAll(() => {
functionSpy.mockReset();
});
test('test', () => {
functionSpy.mockReturnValue(1);
expect(helperFunctions.function2()).toEqual(3);
});
});
在我的测试中,function1 没有被模拟,它仍然调用实际的实现。 任何帮助表示赞赏。
【问题讨论】:
-
无法部分模拟模块。当您不需要模拟另一个函数时,您应该考虑将模块分成两个或仅以某种方式组合您的测试
-
不可能以当前编写代码的方式在
function2内模拟对function1的调用...有关详细信息,请参阅my answer here
标签: javascript mocking jestjs