2016-03-17 33 views
15

In react-native usiamo fetch per eseguire richieste di rete, tuttavia fetch non è un modulo esplicitamente richiesto, quindi è apparentemente impossibile prendere in giro in Jest .Come eseguire il test delle chiamate API con fetch() in react-native con Jest

Anche cercando di chiamare un metodo che utilizza fetch in un test si tradurrà in:

ReferenceError: fetch is not defined.

C'è un modo per testare tali richieste API in risposta nativo con Jest?

risposta

15

All'interno del vostro banco di prova si può prendere in giro qualsiasi funzione che si desidera utilizzando schernisce di Jest:

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

questo approccio funziona solo per i casi di test promessa a base (vedi pit nella documentazione Jest).

Per quanto riguarda fetch è una funzione asincrona, è necessario eseguire tutti i test utilizzando pit (Per saperne di più sui test asincrone here).

+0

Grazie mille! –

+1

Per ora puoi usare 'it' restituendo una Promessa. –

4

Piuttosto che rotolare la propria simulazione, è possibile utilizzare il pacchetto npm jest-fetch-mock per sovrascrivere l'oggetto di recupero globale. Questo pacchetto ti consente di impostare risposte false e verificare le richieste inviate. Vedi quel link per esempi di utilizzo estesi.

+5

In alternativa, la tua simulazione non deve essere specifica per Jest. [fetch-mock] (http://www.wheresrhys.co.uk/fetch-mock/) ha un'API molto carina ed è più completo di jest-fetch-mock. – ArthurDenture

Problemi correlati