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

Barbara Streisand
リリース: 2024-10-23 22:31:30
オリジナル
902 人が閲覧しました

How to Mock ES6 Module Imports in Jest?

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

概要

Jest は、モックを含む単体テスト用の包括的なツール スイートを提供しますコードにインポートされるモジュール。この記事では、Jest で ES6 モジュール インポートをモックする方法を説明し、モジュールの依存関係をテストするという課題に対処します。

問題ステートメント

モジュール インポートをモックすると、開発者はモジュールの動作を分離できます。特定のモジュールに依存するモジュールのテストを実行します。ただし、インポートがスパイに置き換えられる Jasmine で使用されるアプローチは、テスト環境が異なるため、Jest には直接適用できません。

ソリューション

Jest は、 import * 構文を使用して、モジュールからすべてのエクスポートを単一のオブジェクトとしてインポートします。このテクニックは、ES6 モジュールのインポートをモックするために利用できます。

名前付きエクスポートのモック

名前付きエクスポートの場合は、単に import * を使用してモジュールをインポートし、エクスポートされたオブジェクトを次のように変更します。目的の関数をモックします:

// dependency.js
export const doSomething = (y) => console.log(y);
ログイン後にコピー
// myModule.js
import { doSomething } from './dependency';

export default (x) => {
  doSomething(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(); // Mutate the named export

    myModule(2);

    expect(dependency.doSomething).toBeCalledWith(4);
  });
});
ログイン後にコピー

デフォルトのエクスポートのモック

デフォルトのエクスポートの場合、import moduleName from 'modulePath' を使用してインポートできます。次に、インポートされたオブジェクトのデフォルト値を変更します。

// dependency.js
export default (y) => console.log(y);
ログイン後にコピー
// myModule.js
import myModule from './myModule';
import * as dependency from '../dependency';

describe('myModule', () => {
  it('calls the dependency with double the input', () => {
    dependency.default = jest.fn(); // Mutate the default export

    myModule(2);

    expect(dependency.default).toBeCalledWith(4); // Assert against the default
  });
});
ログイン後にコピー

結論

import * 構文を使用して、エクスポートされたオブジェクトを変更することができます。 Jest で ES6 モジュールのインポートをモックし、依存関係を分離しながらモジュールの機能をテストできるようにします。

以上がJest で ES6 モジュールのインポートをモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート