Introduction
Jest fournit une suite complète d'outils pour les tests unitaires, y compris la simulation modules importés dans votre code. Cet article explique comment simuler les importations de modules ES6 dans Jest, en relevant le défi du test des dépendances des modules.
Énoncé du problème
Les importations de modules moqueuses permettent aux développeurs d'isoler le comportement de un module spécifique lors de l'exécution de tests pour ses modules dépendants. Cependant, l'approche utilisée dans Jasmine, où les importations sont remplacées par des espions, n'est pas directement applicable dans Jest en raison de son environnement de test différent.
Solution
Jest fournit le syntaxe import * pour importer toutes les exportations d'un module en tant qu'objet unique. Cette technique peut être utilisée pour simuler les importations de modules ES6.
Mocking Named Exports
Pour les exportations nommées, importez simplement le module à l'aide de import *, puis mute l'objet exporté en moquez-vous de la fonction souhaitée :
// dependency.js export const doSomething = (y) => console.log(y);
// myModule.js import { doSomething } from './dependency'; export default (x) => { doSomething(x * 2); };
// myModule-test.js import myModule from '../myModule'; import * as dependency from '../dependency'; describe('myModule', () => { it('calls the dependency with double the input', () => { dependency.doSomething = jest.fn(); // Mutate the named export myModule(2); expect(dependency.doSomething).toBeCalledWith(4); }); });
Mocking Default Exports
Pour les exportations par défaut, vous pouvez les importer en utilisant import moduleName from 'modulePath' puis muter la valeur par défaut de l'objet importé :
// dependency.js export default (y) => console.log(y);
// myModule.js import myModule from './myModule'; import * as dependency from '../dependency'; describe('myModule', () => { it('calls the dependency with double the input', () => { dependency.default = jest.fn(); // Mutate the default export myModule(2); expect(dependency.default).toBeCalledWith(4); // Assert against the default }); });
Conclusion
En utilisant la syntaxe import* et en mutant l'objet exporté, il est possible pour simuler les importations de modules ES6 dans Jest, vous permettant de tester les fonctionnalités de vos modules tout en isolant leurs dépendances.
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!