モジュールで関数を実行できると思って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
ですか?