Maison  >  Article  >  interface Web  >  Comment se moquer des importations ES6 dans Jest : un guide complet

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

Susan Sarandon
Susan Sarandonoriginal
2024-10-23 22:23:30393parcourir

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>

Dans votre module de production :

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

export default (x) => {
  doSomething(x * 2);
};</code>

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>

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>
<code class="js">// myModule.js
import dependency from './dependency'; // Note the lack of curlies

export default (x) => {
  dependency(x * 2);
};</code>
<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>

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!

Déclaration:
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