ホームページ >ウェブフロントエンド >jsチュートリアル >import * を使用して Jest で ES6 モジュールのインポートをモックする方法?

import * を使用して Jest で ES6 モジュールのインポートをモックする方法?

DDD
DDDオリジナル
2024-10-24 05:22:02846ブラウズ

How to Mock ES6 Module Imports in Jest Using import *?

Jest で ES6 モジュール インポートをモックする

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。