首頁 >web前端 >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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn