我以为我可以spyOn
在我的模块中使用一个函数,但它没有注册为被调用,即使它显然是。这是一个归结为sample.js
:
const func1 = () => {
return func2();
};
const func2 = () => {
return "func2 called";
};
module.exports = { func1, func2 };
这是它的笑话测试./__tests__/sample.test.js
:
const sample = require("../sample");
describe("sample", () => {
it("should spy on func2", () => {
jest.spyOn(sample,"func2");
const f = sample.func1();
console.log(f); // outputs "func2 called" correctly
expect(sample.func2).toHaveBeenCalled(); // fails
});
});
测试失败:
预期的模拟函数已被调用,但未被调用。
如果我监视它,它可以正常工作,func1
但为什么不使用调用的函数func1
呢?