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