jest.mock模块工厂函数调用

时间:2019-08-15 07:24:21

标签: javascript unit-testing mocking jestjs node-modules

给出两个具有以下实现的简单模块:

bar.js

ObjectType

foo.js

export function bar() {
  return 1;
}

和测试 foo.spec.js

import { bar } from './bar';

export function foo() {
  return bar();
}

您可能会注意到使用模块工厂功能定义的import { foo } from './foo'; import { bar } from './bar'; jest.mock('./bar', () => ({ bar: jest.fn(), })); describe('Testing blahblah', () => { it('blahblah should call blah', () => { foo(); expect(bar).toHaveBeenCalled(); }); }); 模块的模拟。

此工厂函数何时调用?多少次?

以某种方式给我的印象是,每次导入时模块工厂函数都被调用 ,因此bar中的导入返回的模拟与从{导入foo.js内部,这应该会使测试失败。
我通常会这样解决:

foo.spec.js

但是事实证明,即使没有这种调整,该测试也可以完美通过,如果我在工厂函数中添加打印,我可以看到它仅被调用一次。

有人可以向我解释工厂功能的确切行为是什么吗?

0 个答案:

没有答案