Axios: Jest и Nock возвращают ошибку сети при выполнении запросов с помощью Axios

Созданный на 5 июн. 2017  ·  3Комментарии  ·  Источник: axios/axios

Резюме

При тестировании асинхронного кода с помощью Jest или Nock всегда возвращается сетевая ошибка.

Об этом сообщают другие:
https://www.bountysource.com/issues/38003315-network-error-when-using-nock-with-axios
https://stackoverflow.com/questions/42677387/jest-returns-network-error-when-doing-an-authenticated-request-with-axios

На самом деле я использовал первое решение, предложенное для этого StackOverflow: «Решение изменить адаптер axios на http». Это действительно работает.

Без принудительного использования http-адаптера запуск «npm test» с Jest приведет к тому, что тест никогда не завершится и застрянет навсегда.

Я не уверен, что это проблема Axios, а не Jest или Nock, и дело не в этом.

Что странно, так это трассировка стека ниже: мне кажется, что выполняется реализация xhr. Разве это не странно в среде узлов?
Есть ли более простой способ принудительно использовать адаптер http, чем тот, который рекомендован в StackOverflow?

Сетевая ошибка

 в createError (node_modules / axios / lib / core / createError.js: 16:15)
 в XMLHttpRequest.handleError [как onerror] (node_modules / axios / lib / adapters / xhr.js: 87: 14)
 в XMLHttpRequest.callback. (анонимная функция) (node_modules / jsdom / lib / jsdom / living / events / EventTarget-impl.js: 289: 32)
 в invokeEventListeners (node_modules / jsdom / lib / jsdom / living / events / EventTarget-impl.js: 219: 27)
 в invokeInlineListeners (node_modules / jsdom / lib / jsdom / living / events / EventTarget-impl.js: 166: 7)
 в EventTargetImpl._dispatch (node_modules / jsdom / lib / jsdom / living / events / EventTarget-impl.js: 122: 7)
 в EventTargetImpl.dispatchEvent (node_modules / jsdom / lib / jsdom / living / events / EventTarget-impl.js: 87: 17)
 в XMLHttpRequest.dispatchEvent (node_modules / jsdom / lib / jsdom / living / generated / EventTarget.js: 61: 35)
 при dispatchError (node_modules / jsdom / lib / jsdom / living / xmlhttprequest.js: 994: 9)
 в validCORSHeaders (node_modules / jsdom / lib / jsdom / living / xmlhttprequest.js: 1009: 7)
 в receiveResponse (node_modules / jsdom / lib / jsdom / living / xmlhttprequest.js: 871: 12)
 в EventEmitter.client.on.res (node_modules / jsdom / lib / jsdom / living / xmlhttprequest.js: 691: 38)
 в emitOne (events.js: 96: 13)
 в EventEmitter.emit (events.js: 191: 7)
 в Request.realClient.on.res (node_modules / jsdom / lib / jsdom / living / xhr-utils.js: 281: 49)
 в emitOne (events.js: 96: 13)
 в Request.emit (events.js: 191: 7)
 в Request.onRequestResponse (node_modules / request / request.js: 1074: 10)
 на emitOne (events.js: 101: 20)
 в ClientRequest.emit (events.js: 191: 7)
 в HTTPParser.parserOnIncomingClient (_http_client.js: 522: 21)
 в HTTPParser.parserOnHeadersComplete (_http_common.js: 99: 23)
 в Socket.socketOnData (_http_client.js: 411: 20)
 в emitOne (events.js: 96: 13)
 в Socket.emit (events.js: 191: 7)
 в readableAddChunk (_stream_readable.js: 178: 18)
 в Socket.Readable.push (_stream_readable.js: 136: 10)
 в TCP.onread (net.js: 561: 20)

Контекст

  • версия axios :
  • Среда: узел v7.10, Ubuntu 17.04 Linux 4.10

Самый полезный комментарий

Если вы посмотрите на трассировку стека, вы заметите следы jsdom. Это означает, что вы используете среду jsdom / browser, а не node. Это просто проблема с конфигурацией шутки.

Все 3 Комментарий

Если вы посмотрите на трассировку стека, вы заметите следы jsdom. Это означает, что вы используете среду jsdom / browser, а не node. Это просто проблема с конфигурацией шутки.

Я изменил тестовый сценарий в package.json на "test": "response-scripts test --env = node", но он все еще не работает для меня. Есть ли другое место, где это нужно изменить? (В моем проекте использовалось приложение create-response-app)

jest --env=node у меня работает.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги