1. ホーム
  2. javascript

[解決済み] Jest: サードパーティライブラリで使用されているコンソールをモックするには?

2022-08-15 07:55:51

質問

console.warn/errorをモック化しようとしているのですが、うまくいきません。私はその中でconsole.warnを呼び出すサードパーティ-ライブラリーを使用しています。私はそれが呼び出されたか、呼び出されなかったかをテストする必要があります。私のテストケースでは、私はconsole.warnをスタブしようとしましたが、それは役に立ちませんでした。その後、私は手動でコンソールをモックしようとしましたが、それもうまくいきませんでした。

console.warn = jest.fn();
testSchema('/app/components/Users/UserItem/UserItemContainer.js');
expect(console.warn).toBeCalled();

は動作しませんでした。

console.warn = jest.fn();
testSchema('/app/components/Users/UserItem/UserItemContainer.js');
console.warn('error');
expect(console.warn).toBeCalled();

は動作しました。

しかし、私はまだ console.warn node_modules/babel-relay-plugin/lib/getBabelRelayPlugin.js:138 が表示されます。

どのように解決するのですか?

この場合 global を使って、グローバルコンテキスト内のオブジェクトにアクセスすることができます。

global.console = {warn: jest.fn()}
expect(console.warn).toBeCalled()

または jest.spyOn に追加された 19.0.0

jest.spyOn(global.console, 'warn')