Axios: Jest y Nock devuelven un error de red al realizar solicitudes con Axios

Creado en 5 jun. 2017  ·  3Comentarios  ·  Fuente: axios/axios

Resumen

Probar código asíncrono con Jest o Nock siempre devuelve un error de red.

Esto es informado por otros:
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

De hecho, utilicé la primera solución sugerida en ese StackOverflow: "Solución para cambiar el adaptador axios a http". Eso realmente funciona.

Sin forzar el adaptador http, ejecutar "npm test" con Jest hace que la prueba nunca se complete y se quede bloqueada para siempre.

No estoy seguro de que este sea un problema de Axios en lugar de Jest o Nock y este no es el punto.

Lo que es extraño es el seguimiento de pila a continuación: me parece que está ejecutando la implementación xhr. ¿No es esto extraño en el entorno de los nodos?
¿Existe una forma más sencilla de forzar el uso del adaptador http que la recomendada en StackOverflow?

Error de red

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

Contexto

  • versión de axios :
  • Entorno: nodo v7.10, Ubuntu 17.04 Linux 4.10

Comentario más útil

Si echas un vistazo a tu seguimiento de pila, notarás que hay rastros de jsdom. Eso significa que está utilizando un entorno jsdom / browser en lugar de node. Es solo un problema de configuración de broma.

Todos 3 comentarios

Si echas un vistazo a tu seguimiento de pila, notarás que hay rastros de jsdom. Eso significa que está utilizando un entorno jsdom / browser en lugar de node. Es solo un problema de configuración de broma.

Cambié el script de prueba en package.json a "test": "react-scripts test --env = node" pero todavía no me funciona. ¿Hay otro lugar donde esto deba cambiarse? (Mi proyecto usó create-react-app)

jest --env=node me funciona.

¿Fue útil esta página
0 / 5 - 0 calificaciones