Comment puis-je exécuter une configuration avant chaque exécution de test Jest
-
21-12-2019 - |
Question
J'écris des tests pour une application React qui utilise Fluxxor pour fournir un répartiteur d'événements.Pour que cela fonctionne, il faut dire à Jest de ne pas se moquer de quelques modules utilisés en interne et fournis par Node lui-même.
Cela signifie que je ne peux pas simplement les ajouter au unmockedModulePathPatterns
clé de configuration, et à la place, vous devez utiliser du code comme celui-ci :
[ 'util', 'events' ].forEach(function (module) {
jest.setMock(module, require.requireActual(module));
});
Cependant, je ne trouve aucun endroit utile pour le mettre.j'ai un setupEnvScriptFile
qui configure quelques globales que j'utilise dans presque tous mes tests, mais le jest
L'objet ne semble pas être disponible dans ce contexte, donc je ne peux pas simplement y définir les simulations.
En guise de mesure provisoire, j'ai enveloppé le code ci-dessus dans une fonction que j'appelle au début de tout describe
bloque le test des magasins Fluxxor, mais c'est loin d'être idéal.
La solution 2
Il semble que la réponse, du moins actuellement, est « vous ne pouvez pas dans ce cas », mais des problèmes restent ouverts concernant les deux modifications qui doivent être apportées pour le prendre en charge.
https://github.com/facebook/jest/issues/106 https://github.com/facebook/jest/issues/107
Autres conseils
As-tu essayé config.setupTestFrameworkScriptFile?On dirait que ce serait le bon endroit pour patcher l'API, selon la documentation.
FWIW, voici une solution que nous avons utilisée pour ajouter la prise en charge de Fluxxor et React-Router à nos spécifications de test.