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

Comment se moquer des importations ES6 dans Jest : un guide complet

Susan Sarandon
Libérer: 2024-10-23 22:23:30
original
387 Les gens l'ont consulté

How to Mock ES6 Imports in Jest: A Comprehensive Guide

Comment se moquer des importations ES6 avec Jest

Introduction

Lorsque vous testez les modules ES6, vous il faudra peut-être se moquer du comportement des dépendances importées. Alors que Jasmine propose une approche simple, Jest nécessite une solution légèrement différente.

Named Export Mocking

Pour simuler une exportation nommée, vous pouvez utiliser un hack impliquant import *. Considérez le module suivant :

<code class="js">// dependency.js
export const doSomething = (y) => console.log(y);</code>
Copier après la connexion

Dans votre module de production :

<code class="js">// myModule.js
import { doSomething } from './dependency';

export default (x) => {
  doSomething(x * 2);
};</code>
Copier après la connexion

Et dans votre test :

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

Exportation par défaut Mocking

Le même hack fonctionne pour les exportations par défaut :

<code class="js">// dependency.js
export default (y) => console.log(y);</code>
Copier après la connexion
<code class="js">// myModule.js
import dependency from './dependency'; // Note the lack of curlies

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

Note d'avertissement

Bien que cette approche de piratage fonctionne, cela n'est pas recommandé car cela peut entraîner des effets secondaires et un comportement imprévisible dans les tests, surtout si les tests sont exécutés dans le désordre. Pour une moquerie plus robuste et fiable, envisagez d'utiliser jest.spyOn ou jest.mock comme suggéré dans d'autres réponses ou dans la documentation mise à jour.

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!