簡體   English   中英

包含命名和默認導出的模擬導入

[英]mocking imports that contain both named and a default export

我有一個實用程序文件,其中包含許多導出以及默認導出。 在同一個組件中使用了命名和導出默認值。 我無法確定如何針對同一測試中的命名組件和默認組件編寫測試。

下面的代碼以簡化的方式說明了該應用程序。

實用程序.js

export const mock1svc = () => {
  return true;
};

const mock2svc = () => {
  return true;
};

export default mock2svc;

comp.js (僅供參考,該應用程序呈現良好)

import Utils, { mock1svc } from 'utils';
...
render (
    <p>{mock1svc()}</p>
    <p>{Utils()}</p>
)

比較測試.js

我可以測試默認導出:

jest.mock('../mock-utils', () => jest.fn());

產生的錯誤:

TypeError: (0 , _mockUtils.mock1svc) 不是函數

或測試命名導出:

jest.mock('../mock-utils', () => ({
  mock1svc: jest.fn(),
  mock2svc: jest.fn(),
}));

產生的錯誤:

TypeError: (0 , _mockUtils.default) 不是函數

utils模塊正在導出一個對象。 您應該能夠創建該對象並為其分配一個.default如下所示:

jest.mock('../mock-utils', () => {
  const mockUtils = {
    mock1svc: jest.fn(),
    mock2svc: jest.fn(),
  };
  mockUtils.default = jest.fn();

  return mockUtils
});

確保您模擬的路徑“指向”與導入語句相同的位置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM