Comment le test de l'unité des appels d'API avec moqué fetch() dans réagissent-native avec la Blague
À Réagir Natif-je utiliser fetch
pour effectuer des demandes de réseau, cependant fetch
n'est pas explicitement requis du module, de sorte qu'il est apparemment impossible de fantaisie dans la Plaisanterie.
Même essayer d'appeler une méthode qui utilise fetch
dans un test permettra:
ReferenceError: fetch n'est pas défini
Est-il un moyen de tester de telles requêtes à l'API de réagir natif avec la Blague?
Vous devez vous connecter pour publier un commentaire.
À l'intérieur de votre cas de test vous pouvez vous moquer de toute fonction que vous voulez en utilisant la Blague du se moque:
Cette approche ne fonctionne que pour la promesse basée sur des cas de test (voir
pit
dans la Plaisanterie docs).Autant que
fetch
est une fonction async, vous avez besoin pour exécuter vos tests à l'aide depit
(lire plus à propos de async tests ici).it
en retour d'une Promesse.Une autre approche où vous vous moquez du mondial
fetch
objet:Au-dessus de la méthode d'assistance peuvent être modifiés de la manière que vous voulez 🙂 j'Espère que ça aide quelqu'un
Plutôt que de rouler votre propre maquette, vous pouvez utiliser le jest-fetch-maquette mnp paquet afin de remplacer le chercher de l'objet. Ce package vous permet de simuler des réponses et vérifier envoyé des demandes. Voir ce lien pour une utilisation approfondie des exemples.
matcher
et automatiquement d'intercepter toutes les fetch appels. Je ne veux pas avoir à dupliquer mon installation rapide dans une unité de test juste pour s'assurer que le code testé reçoit un légitime objet de Réponse.J'ai résolu ce problème en ajoutant
isomorphic-fetch
.et de l'utiliser comme
whatwg-extraction pourrait fonctionner ainsi
Comme @ArthurDenture recommandé, vous pouvez utiliser fetch-maquette, mais il y a quelques paquets supplémentaires que vous devez installer pour qu'il fonctionne avec Réagissent Native et de la Plaisanterie:
Vous pouvez ensuite se moquer de récupérer les demandes dans vos tests. Voici un exemple: