How to unit-test-API-Aufrufe mit verspottet fetch() in reagieren-native mit Scherz
In Reagieren Nativen benutze ich fetch
zum durchführen von Anfragen im Netzwerk, jedoch fetch
ist nicht ausdrücklich erforderlich, Modul, so ist es scheinbar unmöglich zu mock im Scherz.
Sogar versucht, rufen Sie eine Methode, die verwendet fetch
in einem test wird das Ergebnis in:
ReferenceError: fetch ist nicht definiert
Gibt es eine Möglichkeit zu testen, wie API-Anfragen reagieren in native mit Scherz?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem test-Fall können Sie mit gespielter jede Funktion, die Sie wollen, indem Sie Scherz ist, spottet:
Dieser Ansatz funktioniert nur für den promise-basierten Testfällen (siehe
pit
im Scherz docs).Soweit
fetch
ist eine asynchrone Funktion, die Sie benötigen, um ausführen alle tests mitpit
(Lesen Sie mehr über asynchrone tests hier).it
durch Rücksendung ein Versprechen.Einen anderen Ansatz, wo man spotten die Globale
fetch
Objekt:Den oben genannten Helfer-Methode geändert werden können, wie Sie wollen 🙂 Hoffe, es hilft jemand
Anstatt Ihre eigenen Rollen zu verspotten, die Sie verwenden können, die Scherz-fetch-mock npm-Paket zu überschreiben die globalen fetch-Objekt. Das Paket ermöglicht die Einrichtung von fake-Antworten, und überprüfen Sie, gesendeten Anforderungen. Siehe dieser link für ausführliche Anwendungsbeispiele.
matcher
und automatisch abzufangen, werden alle fetch-Aufrufe. Ich will nicht zu haben, um doppelte meine Express-setup in einem Gerät testen, nur um sicherzustellen, dass der code getestet wird, erhält eine legit Response-Objekt.Ich löste dies durch hinzufügen
isomorphic-fetch
.und es
whatwg-fetch funktionieren
Als @ArthurDenture empfohlen, die Sie verwenden können,fetch-mock, aber es gibt einige zusätzliche Pakete, die Sie installieren müssen, um es Arbeit mit React Native und Scherz:
Dann können Sie mock-fetch-requests in Ihren tests. Hier ist ein Beispiel: