Jasmine では、ES6 モジュール インポートをモックするのは簡単です。ただし、Jest では、特にデフォルトのエクスポートを利用するモジュールを扱う場合、プロセスがより困難になる可能性があります。この記事では、簡単な import * ハックを使用して、Jest で ES6 モジュールのインポートをモックする方法について説明します。
従来、インポートをモックするには、インポートを require に置き換え、テスト内で宣言する必要がありました。このアプローチは望ましくない可能性があります。
<code class="javascript">// undesirable approach import myModule from '../myModule'; import dependency from '../dependency'; describe('myModule', () => { // ... });</code>
代わりに、 import * を利用してモジュールのエクスポートを直接変更し、目的の関数またはデフォルトのエクスポートをモックすることができます。名前付きエクスポートの場合:
<code class="javascript">import * as dependency from '../dependency'; // ... dependency.doSomething = jest.fn(); // mutate the named export myModule(2); expect(dependency.doSomething).toBeCalledWith(4);</code>
同様に、デフォルトのエクスポートの場合:
<code class="javascript">import * as dependency from '../dependency'; // ... dependency.default = jest.fn(); // mutate the default export myModule(2); expect(dependency.default).toBeCalledWith(4);</code>
この方法は ES6 インポートをモックするための回避策を提供しますが、インポートされたモジュールの変更が含まれることに注意することが重要です。これにより、テスト実行時に副作用や潜在的な問題が発生する可能性があります。したがって、jest.spyOn や jest.mock などの Jest のネイティブ モック メソッドを使用することが、推奨されるアプローチとして推奨されます。
以上がimport * を使用して Jest で ES6 モジュールのインポートをモックする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。