ホームページ >ウェブフロントエンド >jsチュートリアル >Jest で ES6 モジュールのインポートを効果的にモックするにはどうすればよいですか?
ES6 モジュールのテストでは、特定の機能を分離してアサートするために、インポートされたモジュールをモックする必要がよくあります。これに関連して、Jest はモジュールのインポートをモックするためのいくつかのオプションを提供します。
従来のアプローチには、それぞれ jest.mock または jest.spyOn を使用して、個々の名前付きエクスポートまたはデフォルトのエクスポートをモックすることが含まれます。ただし、より複雑なシナリオの場合は、より柔軟な方法が存在します。
import * を使用すると、名前付きエクスポートとデフォルトのエクスポートの両方を含む、モジュールからのすべてのエクスポートのモック化が可能になります。このアプローチを使用して変更されたコードは次のとおりです。
<code class="js">// dependency.js export const doSomething = (y) => console.log(y); export default (y) => console.log(y); // myModule.js import * as dependency from './dependency'; export default (x) => { dependency.doSomething(x * 2); dependency.default(x * 2); }; // myModule-test.js import myModule from '../myModule'; import * as dependency from '../dependency'; describe('myModule', () => { it('calls the dependency with double the input', () => { dependency.doSomething = jest.fn(); dependency.default = jest.fn(); myModule(2); expect(dependency.doSomething).toBeCalledWith(4); expect(dependency.default).toBeCalledWith(4); }); });</code>
この例では、すべての名前付きエクスポートをインポートするための依存関係として、 import { doSomething } を import * に置き換えます。次に、インポートされたオブジェクトを直接変更して、 jest.fn() を使用してエクスポートされた関数をモックします。
以上がJest で ES6 モジュールのインポートを効果的にモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。