2017-11-13 19 views
0

私は、componentDidMount関数でいくつかのデータを取得するコンポーネントを持っています。データを取り出す関数はfetch-data.jsです。私はこのコンポーネントをテストしようとしており、取得したデータを疑似したい。このようなJestでwhatwg-fetchをテストするにはどうしたらよいですか?

... 
node_modules 
__mocks__ 
└── whatwg-fetch.js 
... 

私WHATWG-fetch.jsモックルックス::私は私のnode_modulesフォルダに隣接して、私の__mocks__フォルダを持っているhttp://facebook.github.io/jest/docs/en/manual-mocks.html

:私はテストのためfetch機能をからかっでこのリンクをたどるしようとしています

RUNS src/scenes/Home/Home.spec.js 
myproject/node_modules/react-scripts/scripts/test.js:20 
    throw err; 
^

TypeError: Network request failed 
    at XMLHttpRequest.xhr.onerror (/Local/Users/john/Documents/js/react/haiku/node_modules/whatwg-fetch/fetch.js:436:16) 
:私はテストを実行するとき
const whatwgFetch = jest.genMockFromModule('whatwg-fetch'); 
whatwgFetch.fetch = (url) => jest.fn().mockImplementation(() => Promise.resolve({ ok: true })); 

module.exports = whatwgFetch; 

しかし、私はまだ、このエラーが出ます

問題のXHRリクエストは第三者には送信されませんが、違いがあればローカルURL(fetch('/my/local/file'))です。

編集:コンポーネントテストに何もない場合でも同じエラーが発生します。すべてがMyComponent.spec.jsでコメントアウトされており、まだネットワークリクエストを試みているようです。誰でも知っている理由は?

答えて

1

だから、私はjest-fetch-mockをインストールしていたし、私のsrc/setupTests.jsにこれらの行を追加しました:

global.fetch = require('jest-fetch-mock'); 
fetch.mockResponse(JSON.stringify({ testing: true })); 

、今のテストが実行されます。

関連する問題