Axios: Jest e Nock retornam erro de rede ao fazer solicitações com Axios

Criado em 5 jun. 2017  ·  3Comentários  ·  Fonte: axios/axios

Resumo

Testar o código assíncrono com Jest ou Nock sempre retorna erro de rede.

Isso é relatado por outros:
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

Na verdade, usei a primeira solução sugerida nesse StackOverflow: "Solução mudar adaptador de axios para http". Isso realmente funciona.

Sem forçar o adaptador http, executar "npm test" com Jest faz com que o teste nunca seja concluído e fique travado para sempre.

Não tenho certeza se isso é um problema do Axios, em vez de Jest ou Nock, e esse não é o ponto.

O que é estranho é o stacktrace abaixo: parece-me que está executando a implementação xhr. Isso não é estranho no ambiente do nó?
Existe uma maneira mais simples de forçar o uso do adaptador http do que a recomendada em StackOverflow?

Erro de rede

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

Contexto

  • versão axios :
  • Ambiente: nó v7.10, Ubuntu 17.04 Linux 4.10

Comentários muito úteis

Se você der uma olhada no rastreamento de pilha, notará que há vestígios de jsdom. Isso significa que você está usando um ambiente jsdom / navegador em vez de um nó. É apenas um problema de configuração de brincadeira.

Todos 3 comentários

Se você der uma olhada no rastreamento de pilha, notará que há vestígios de jsdom. Isso significa que você está usando um ambiente jsdom / navegador em vez de um nó. É apenas um problema de configuração de brincadeira.

Mudei o script de teste em package.json para "test": "react-scripts test --env = node", mas ainda não está funcionando para mim. Existe outro lugar onde isso precisa ser mudado? (Meu projeto usou create-react-app)

jest --env=node funciona para mim.

Esta página foi útil?
0 / 5 - 0 avaliações