Menguji kode asinkron dengan Jest atau Nock selalu mengembalikan Kesalahan Jaringan.
Ini dilaporkan oleh orang lain:
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
Saya sebenarnya telah menggunakan solusi pertama yang disarankan pada StackOverflow itu: "Solusi ubah adaptor aksio ke http". Itu benar-benar bekerja.
Tanpa memaksa adaptor http, menjalankan "npm test" dengan Jest menyebabkan pengujian tidak pernah selesai dan tetap macet selamanya.
Saya tidak yakin ini adalah masalah Axios daripada Jest atau Nock dan bukan ini intinya.
Yang aneh adalah stacktrace di bawah ini: menurut saya yang menjalankan implementasi xhr. Bukankah ini aneh di lingkungan simpul?
Apakah ada cara yang lebih sederhana untuk memaksa menggunakan adaptor http daripada yang disarankan di StackOverflow?
di createError (node_modules/axios/lib/core/createError.js:16:15) di XMLHttpRequest.handleError [sebagai onerror] (node_modules/axios/lib/adapters/xhr.js:87:14) di XMLHttpRequest.callback.(fungsi anonim) (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:289:32) di inviteEventListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:219:27) di panggilanInlineListeners (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:166:7) di EventTargetImpl._dispatch (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:122:7) di EventTargetImpl.dispatchEvent (node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js:87:17) di XMLHttpRequest.dispatchEvent (node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js:61:35) di dispatchError (node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:994:9) di validCORSHeaders (node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:1009:7) di acceptResponse (node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:871:12) di EventEmitter.client.on.res (node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:691:38) di emitOne (events.js:96:13) di EventEmitter.emit (events.js:191:7) di Request.realClient.on.res (node_modules/jsdom/lib/jsdom/living/xhr-utils.js:281:49) di emitOne (events.js:96:13) di Request.emit (events.js: 191:7) di Request.onRequestResponse (node_modules/request/request.js:1074:10) di emitOne (events.js:101:20) di ClientRequest.emit (events.js:191:7) di HTTPParser.parserOnIncomingClient (_http_client.js:522:21) di HTTPParser.parserOnHeadersComplete (_http_common.js:99:23) di Socket.socketOnData (_http_client.js:411:20) di emitOne (events.js:96:13) di Socket.emit (events.js:191:7) di readableAddChunk (_stream_readable.js:178:18) di Socket.Readable.push (_stream_readable.js:136:10) di TCP.onread (net.js:561:20)
Jika Anda melihat jejak tumpukan Anda, Anda akan melihat ada jejak jsdom. Itu berarti Anda menggunakan lingkungan jsdom/browser daripada node.js. Ini hanya masalah konfigurasi lelucon.
Saya mengubah skrip pengujian di package.json menjadi "test": "react-scripts test --env=node" tetapi masih tidak berfungsi untuk saya. Apakah ada tempat lain di mana ini perlu diubah? (Proyek saya menggunakan create-react-app)
jest --env=node
bekerja untuk saya.
Komentar yang paling membantu
Jika Anda melihat jejak tumpukan Anda, Anda akan melihat ada jejak jsdom. Itu berarti Anda menggunakan lingkungan jsdom/browser daripada node.js. Ini hanya masalah konfigurasi lelucon.