2016-03-17 11 views
15

反応ネイティブではfetchを使用してネットワークリクエストを実行しますが、fetchは明示的に必須のモジュールではないため、 。Jestとの反応ネイティブでの模擬fetch()での単体テストAPI呼び出しの方法

ReferenceError: fetch is not defined

はしても、テストでfetchを用いる方法がになります呼び出そう。

Jestとネイティブで反応するようなAPIリクエストをテストする方法はありますか?

答えて

15

テストケース内には、冗談のモックを使って、あなたが望むすべての機能を模擬することができます

fetch = jest.fn(() => new Promise(resolve => resolve())); 

このアプローチは、唯一の約束ベースのテストケースのために働く(冗談ドキュメントでpitを参照してください)。

fetchが非同期機能の場合は、pit(すべて非同期テストhere)のすべてのテストを実行する必要があります。

+0

ありがとうございます! –

+1

FYIプロミスを返すことで 'it'を使用できるようになりました。 –

4

独自のモックをローリングするのではなく、jest-fetch-mock npmパッケージを使用してグローバルフェッチオブジェクトをオーバーライドできます。このパッケージでは、偽の応答を設定し、送信された要求を確認することができます。幅広い使用例については、そのリンクを参照してください。

+5

また、あなたのモックはJest特有である必要はありません。 [fetch-mock](http://www.wheresrhys.co.uk/fetch-mock/)は非常にいいAPI​​を持っていて、jest-fetch-mockよりもフル機能です。 – ArthurDenture

関連する問題