Maison > interface Web > js tutoriel > le corps du texte

Comment se moquer des importations de modules ES6 dans Jest ?

Barbara Streisand
Libérer: 2024-10-23 22:31:30
original
810 Les gens l'ont consulté

How to Mock ES6 Module Imports in Jest?

Mocking ES6 Module Imports in Jest

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);
Copier après la connexion
// myModule.js
import { doSomething } from './dependency';

export default (x) => {
  doSomething(x * 2);
};
Copier après la connexion
// 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);
  });
});
Copier après la connexion

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);
Copier après la connexion
// 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
  });
});
Copier après la connexion

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!