[英]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.