React Native中使用axios-mock-adapter返回Promise无法Mock API求助
在React Native中解决axios-mock-adapter返回Promise的问题
你在React Native中使用axios-mock-adapterMock Axios API时遇到了问题,代码如下:
const axiosMock = new MockAdapter(axios); console.log("axiosMock ==>", axiosMock);
运行测试时,axiosMock返回了一个Promise对象,日志输出:
console.log axiosMock ==> Promise { _x: 0, _y: 0, _z: null, _A: null }
这导致无法正常Mock API,可通过以下方式解决:
检查axios导入与版本兼容性
确保你导入的是axios的同步默认导出,而非异步包装后的模块。同时验证axios和axios-mock-adapter的版本是否匹配——比如axios v1.x需要搭配axios-mock-adapter v1.x及以上版本,版本不兼容会导致实例化异常,返回Promise而非预期的MockAdapter实例。避免在异步上下文实例化MockAdapter
如果测试代码中使用了async/await或Promise链,不要在异步逻辑中错误地将MockAdapter的实例化代码包裹在Promise里,这会导致axiosMock变量被赋值为Promise对象。确保在测试文件的同步顶层作用域实例化:import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; // 同步实例化MockAdapter const axiosMock = new MockAdapter(axios); // 配置Mock接口示例 axiosMock.onGet('/test-api').reply(200, { result: 'mocked data' });检查测试环境配置
在Jest等测试环境中,确认axios没有被配置为异步加载模块。可以在Jest配置文件中调整模块处理规则,确保axios被同步解析,避免实例化时返回Promise。
内容的提问来源于stack exchange,提问作者Pathik Gandhi
相关产品推荐
相关产品推荐

