ホームページ >ウェブフロントエンド >jsチュートリアル >Jest で ES6 モジュールのインポートを効果的にモックするにはどうすればよいですか?

Jest で ES6 モジュールのインポートを効果的にモックするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-24 00:24:02689ブラウズ

How to Effectively Mock ES6 Module Imports in Jest?

Jest での ES6 モジュールのインポートのモック

ES6 モジュールのテストでは、特定の機能を分離してアサートするために、インポートされたモジュールをモックする必要がよくあります。これに関連して、Jest はモジュールのインポートをモックするためのいくつかのオプションを提供します。

従来のアプローチには、それぞれ jest.mock または jest.spyOn を使用して、個々の名前付きエクスポートまたはデフォルトのエクスポートをモックすることが含まれます。ただし、より複雑なシナリオの場合は、より柔軟な方法が存在します。

import * を使用したモック

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

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