如何模拟正在包含要测试的功能的文件中导入的功能?
而无需将其放入 mocks 文件夹中。
// FileIWantToTest.js
import { externalFunction } from '../../differentFolder';
export const methodIwantToTest = (x) => { externalFunction(x + 1) }
我需要确保调用externalFunction
并以正确的参数调用它。
似乎超级简单,但文档中没有介绍如何通过将模拟文件放入 mocks 文件夹中的模拟文件来模拟测试中的所有文件。
答案 0 :(得分:0)
解决方案:我需要将jest.mock调用带到任何测试或任何其他函数之外,因为jest需要提升它。对于像我这样的命名导出,我还必须使用以下语法:
jest.mock('../../differentFolder', () => ({
__esModule: true,
externalFunction: jest.fn(),
}));
答案 1 :(得分:0)
最简单的方法之一是导入库并使用jest.spyOn
来监视该方法:
import { methodIwantToTest } from './FileIWantToTest';
import * as lib from '../../differentFolder'; // import the library containing externalFunction
test('methodIwantToTest', () => {
const spy = jest.spyOn(lib, 'externalFunction'); // spy on externalFunction
methodIwantToTest(1);
expect(spy).toHaveBeenCalledWith(2); // SUCCESS
});