簡體   English   中英

模擬默認導出失敗但命名導出沒有

[英]Mocking default export is failing but named export not

我有一個讓我們說 file.js 有這樣的代碼

const myFunc = () => {
    return {
        func1: () => {},
        func2: () => {}
    }
}

export const myObject = {
 key: ''
};

export default myFunc();

我試圖在我的測試中使用 jest 來模擬這個導出。 假設 file.test.js 是測試文件。

jest.mock('./path/file', () => {
    return {
         default: {
              func1: jest.fn(),
              func2: jest.fn()
         },
         myObject: {}
    };
});

但是當我的測試運行時,它會拋出我的錯誤,說_File.default.func1 is not a function

如何正確模擬同時具有默認導出和命名導出的 js 文件?

解決方案:

index.ts

const myFunc = () => {
  return {
    func1: () => {},
    func2: () => {},
  };
};

export const myObject = {
  key: '',
};

export default myFunc();

index.test.ts

import fns, { myObject } from './';

jest.mock('./', () => {
  return {
    myObject: { key: 'teresa teng' },
    func1: jest.fn(),
    func2: jest.fn(),
  };
});

describe('64003254', () => {
  it('should pass', () => {
    expect(jest.isMockFunction(fns.func1)).toBeTruthy();
    expect(jest.isMockFunction(fns.func2)).toBeTruthy();
    expect(myObject.key).toBe('teresa teng');
  });
});

單元測試結果:

 PASS  src/stackoverflow/64003254/index.test.ts (11.809s)
  64003254
    ✓ should pass (6ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        13.572s

暫無
暫無

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

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