首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >axios-mock-adapter错误:印前检查响应具有无效的HTTP状态代码403

axios-mock-adapter错误:印前检查响应具有无效的HTTP状态代码403
EN

Stack Overflow用户
提问于 2020-03-26 17:24:26
回答 1查看 586关注 0票数 0

我正在尝试通过模拟axios api调用来编写单元测试。下面是axios-mock-adapter配置

代码语言:javascript
复制
import MockAdapter from 'axios-mock-adapter';
import axios from 'axios';

const mock = new MockAdapter(axios);

it('Get User details without errors', async () => {
  const mockData =
    '{"userID": 1234, ...}}';

  const url = '/user/id/560/';
//const url = 'https://example.com/searchuser/user/id/560/'; Also tried with this
  mock.onGet(url).reply(200, mockData);

当我触发操作时,它会调用此API

GET:"https://example.com/searchuser/user/id/560/

以下是完整的错误日志

代码语言:javascript
复制
 console.error node_modules/jest-environment-jsdom/node_modules/jsdom/lib/jsdom/virtual-console.js:29
    Error: Error: Response for preflight has invalid HTTP status code 403
        at Object.dispatchError (C:\Users\lokeshp\branches\nrrui\node_modules\jest-environment-jsdom\node_modules\jsdom\lib\jsdom\living\xhr-utils.js:65:19)
        at EventEmitter.client.on.err (C:\Users\lokeshp\branches\nrrui\node_modules\jest-environment-jsdom\node_modules\jsdom\lib\jsdom\living\xmlhttprequest.js:676:20)
        at EventEmitter.emit (events.js:187:15)
        at Request.preflightClient.on.resp (C:\Users\lokeshp\branches\nrrui\node_modules\jest-environment-jsdom\node_modules\jsdom\lib\jsdom\living\xhr-utils.js:376:16)
        at Request.emit (events.js:182:13)
        at Request.onRequestResponse (C:\Users\lokeshp\branches\nrrui\node_modules\request\request.js:1066:10)
        at ClientRequest.emit (events.js:182:13)
        at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:556:21)
        at HTTPParser.parserOnHeadersComplete (_http_common.js:109:17)
        at TLSSocket.socketOnData (_http_client.js:442:20) undefined

有人能帮我理解一下如何模拟印前呼叫吗?我需要在jsdom中使用jest,因为其他单元测试需要模仿浏览器的行为。找了很多,但似乎找不到解决方案。

EN

回答 1

Stack Overflow用户

发布于 2020-03-26 19:03:31

我在嘲笑axios时犯了一个错误。我已经创建了用于进行api调用的axio实例,并试图在上面的问题中模拟axio的默认实例。所以没有应用模拟。以下是解决问题的方法。

代码语言:javascript
复制
import AxiosAPIInstance from '/api/instance';
const mock = new MockAdapter(AxiosAPIInstance );
.....
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60864162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档