[英](0 , _axios.default) is not a function when mocking axios with interceptors
[英]TypeError: (0 , _axios.default) is not a function when use jest.mock('axios') inside a *.test.js file
我尝试像这样在我的测试文件中模拟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
mocking 设置的任何东西?
谢谢!
如果你想嘲笑默认和模块(命名出口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' })));
作为@mgarcia 的回答的跟进,我在使用他/她的版本时不断收到以下错误:
ReferenceError: The module factory of `jest.mock()` is not allowed to reference
any out-of-scope variables.
Invalid variable access: jest
该错误是由 jest.mock() 中的jest.mock()
jest.fn()
方法引起的。 所以我只是像这样删除它并且能够成功模拟axios
:
jest.mock('axios', () => ({
get: () => Promise.resolve({ data: 'data' }),
}));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.