Var*_*kul 3 javascript unit-testing mocking jestjs axios
我尝试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' })),
}));
Run Code Online (Sandbox Code Playgroud)
但是,当我将其添加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) => {
Run Code Online (Sandbox Code Playgroud)
那么,我应该如何解决这个问题,而我却想为axios模拟设置任何东西呢?
谢谢!
如果要模拟模块的默认导出和命名导出(axios在这种情况下),则__esModule必须在返回值中启用该属性:
jest.mock('axios', () => ({
__esModule: true,
get: jest.fn(() => Promise.resolve({ data: 'data' })),
default: jest.fn(() => Promise.resolve({ data: 'data' })),
}));
Run Code Online (Sandbox Code Playgroud)
另外,似乎您只使用的默认导出axios,您可以将默认导出模拟为:
jest.mock('axios', () => jest.fn(() => Promise.resolve({ data: 'data' })));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
535 次 |
| 最近记录: |