我尝试像这样在测试文件中模拟axios
模块
// mycomponent.test.js
import axios from 'axios';
jest.mock('axios', () => ({
get: jest.fn(() => Promise.resolve({ data: 'data' })),
default: jest.fn(() => Promise.resolve({ data: 'data' })),
}));
但是在我将jest.mock('axios')
添加到测试文件后,出现了这样的错误。
TypeError: (0 , _axios.default) is not a function
55 | this.props.updateGlobalLoading(true);
56 |
> 57 | axios({
| ^
58 | method: 'get',
59 | url: '/v1/api/portal-xml-list',
60 | }).then((res) => {
那么,对于axios
模拟设置中遗漏的任何内容,我应该如何解决?
谢谢!
答案 0 :(得分:2)
如果要模拟模块的默认导出和命名导出(在这种情况下为axios
),则必须在返回值中启用属性__esModule
:
jest.mock('axios', () => ({
__esModule: true,
get: jest.fn(() => Promise.resolve({ data: 'data' })),
default: jest.fn(() => Promise.resolve({ data: 'data' })),
}));
或者,似乎您只使用默认导出axios
,所以可以将默认导出模拟为:
jest.mock('axios', () => jest.fn(() => Promise.resolve({ data: 'data' })));