Jestでモジュールの特定の関数だけモックする
Jestでモジュールをモックするのは便利ですが、モジュールの一部をモックしたい場合に困ることがあります。
// my-module.js
export function foo() { ... }
export function bar() { ... } // bar だけモックしたい
import { foo, bar } from "./my-module";
jest.mock("./my-module", () => ({
bar: jest.fn(),
}));
describe("foo", () => {
it("works", () => {
expect(foo("yay")).toEqual("wow");
});
});
上記のように書いた場合に、 TypeError: foo is not a function
といったエラーになってしまいます。それを回避するには以下のように書きます。
jest.mock("./my-module", () => ({
...jest.requireActual("./my-module"), // foo: jest.requireActual("./my-module").foo でも可
bar: jest.fn(),
}));
Jest的に認められた書き方なのかは怪しいですがとりあえず bar
をモックして foo
はモックせず動かせます
参照
https://github.com/facebook/jest/issues/936#issuecomment-613220940
https://jestjs.io/docs/en/jest-object#jestrequireactualmodulename
Author And Source
この問題について(Jestでモジュールの特定の関数だけモックする), 我々は、より多くの情報をここで見つけました https://qiita.com/maaz118/items/6d35195c36fff847e726著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .