Axios: JestとNockは、Axiosでリクエストを行うとネットワークエラーを返します

作成日 2017年06月05日  ·  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アダプターを強制せずに、Jestで「npmtest」を実行すると、テストが完了せず、永久にスタックしたままになります。

これがJestやNockではなくAxiosの問題であるかどうかはわかりませんが、これは重要ではありません。

奇妙なのは、以下のスタックトレースです。xhr実装を実行しているように見えます。 これはノード環境では奇妙ではありませんか?
StackOverflowでアドバイスされている方法よりも、httpアダプターを強制的に使用する簡単な方法はありますか?

ネットワークエラー

 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)
 EmmitOneで(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)
 EmmitOneで(events.js:96:13)
 Request.emitで(events.js:191:7)
 Request.onRequestResponseで(node_modules / request / request.js:1074:10)
 EmmitOneで(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)で
 EmmitOneで(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環境を使用していることを意味します。 これは単なる冗談の設定の問題です。

全てのコメント3件

スタックトレースを見ると、jsdomのトレースがあることに気付くでしょう。 これは、ノードではなくjsdom / browser環境を使用していることを意味します。 これは単なる冗談の設定の問題です。

package.jsonのテストスクリプトを "test": "react-scripts test --env = node"に変更しましたが、それでも機能しません。 これを変更する必要がある別の場所はありますか? (私のプロジェクトはcreate-react-appを使用しました)

jest --env=nodeは私のために働きます。

このページは役に立ちましたか?
0 / 5 - 0 評価