Lors des tests de modules ES6, il est souvent nécessaire de se moquer des modules importés pour isoler et affirmer des fonctionnalités spécifiques. Dans ce contexte, Jest propose plusieurs options pour se moquer des importations de modules.
L'approche traditionnelle consiste à se moquer des exportations nommées individuelles ou des exportations par défaut en utilisant respectivement jest.mock ou jest.spyOn. Cependant, pour des scénarios plus complexes, une méthode plus flexible existe.
L'utilisation de import * permet de moquer toutes les exportations d'un module, y compris les exportations nommées et par défaut. Voici le code modifié en utilisant cette approche :
<code class="js">// dependency.js export const doSomething = (y) => console.log(y); export default (y) => console.log(y); // myModule.js import * as dependency from './dependency'; export default (x) => { dependency.doSomething(x * 2); dependency.default(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(); dependency.default = jest.fn(); myModule(2); expect(dependency.doSomething).toBeCalledWith(4); expect(dependency.default).toBeCalledWith(4); }); });</code>
Dans cet exemple, nous remplaçons import { doSomething } par import * comme dépendance pour importer toutes les exportations nommées. Nous modifions ensuite directement l'objet importé pour nous moquer des fonctions exportées à l'aide de jest.fn().
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!