Fonctions simulées dans le même module avec Jest
Lorsque vous utilisez Jest pour simuler des fonctions dans le même module, il est important de prendre en compte les problèmes possibles avec des importations de modules. Un problème courant est que la fonction importée peut conserver une référence à la fonction d'origine non simulée, ce qui entraîne un comportement inattendu.
Pour résoudre ce problème efficacement, envisagez l'approche suivante :
Isoler le code du module
Importez le module dans un fichier de code distinct, en garantissant que chaque entité exportée utilise une instance d'elle-même, plutôt que de référencer les exportations d'origine à partir du fichier du module principal. Par exemple :
// module.dev.js import * as thisModule from './module.js'; export function bar() { return 'bar'; } export function foo() { return `I am foo. bar is ${thisModule.bar()}`; // remaining code ...
Se moquer du module isolé
Maintenant, vous pouvez facilement vous moquer de la fonction bar dans le module isolé, car la fonction foo utilise désormais le local instance de bar :
import * as module from '../src/module-dev'; describe('module', () => { // ... set up mocks and tests spyOn(module, 'bar').and.returnValue('fake bar'); expect(module.foo()).toEqual('I am foo. bar is fake bar'); });
Avantages de l'isolement
Importation le module dans son propre fichier de code peut sembler non conventionnel, mais il offre des avantages significatifs :
En adoptant cette approche, vous pouvez simulez efficacement les fonctions au sein du même module à l'aide de Jest, garantissant ainsi la fiabilité et l'efficacité de votre suite de tests.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!