首頁 > web前端 > js教程 > 主體

如何在 Jest 中有效模擬 ES6 模組導入?

Mary-Kate Olsen
發布: 2024-10-24 00:24:02
原創
614 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!