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

Mary-Kate Olsen
リリース: 2024-10-24 00:24:02
オリジナル
613 人が閲覧しました

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

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!