Axios: Jest und Nock geben Netzwerkfehler zurück, wenn sie Anfragen mit Axios stellen

Erstellt am 5. Juni 2017  ·  3Kommentare  ·  Quelle: axios/axios

Zusammenfassung

Das Testen von asynchronem Code mit Jest oder Nock gibt immer Netzwerkfehler zurück.

Dies wird von anderen berichtet:
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

Ich habe tatsächlich die erste Lösung verwendet, die auf diesem StackOverflow vorgeschlagen wurde: "Solution change axios adapter to http". Das funktioniert tatsächlich.

Ohne den HTTP-Adapter zu erzwingen, führt das Ausführen von "npm test" mit Jest dazu, dass der Test nie abgeschlossen wird und für immer stecken bleibt.

Ich bin mir nicht sicher, ob dies eher ein Axios-Problem als Jest oder Nock ist, und darum geht es nicht.

Seltsam ist der Stacktrace unten: Mir scheint, dass die xhr-Implementierung ausgeführt wird. Ist das in der Knotenumgebung nicht seltsam?
Gibt es eine einfachere Möglichkeit, die Verwendung des HTTP-Adapters zu erzwingen, als die auf StackOverflow empfohlene?

Netzwerkfehler

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

Kontext

  • Axios-Version: v0.16.2
  • Umgebung: Knoten v7.10, Ubuntu 17.04 Linux 4.10

Hilfreichster Kommentar

Wenn Sie sich Ihren Stack-Trace ansehen, werden Sie feststellen, dass es Spuren von jsdom gibt. Das bedeutet, dass Sie eine jsdom/Browser-Umgebung anstelle von Node verwenden. Es ist nur ein scherzhaftes Konfigurationsproblem.

Alle 3 Kommentare

Wenn Sie sich Ihren Stack-Trace ansehen, werden Sie feststellen, dass es Spuren von jsdom gibt. Das bedeutet, dass Sie eine jsdom/Browser-Umgebung anstelle von Node verwenden. Es ist nur ein scherzhaftes Konfigurationsproblem.

Ich habe das Testskript in package.json in "test": "react-scripts test --env=node" geändert, aber es funktioniert immer noch nicht bei mir. Gibt es noch eine andere Stelle, an der das geändert werden muss? (Mein Projekt verwendete Create-React-App)

jest --env=node funktioniert bei mir.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen