Heim >Web-Frontend >js-Tutorial >Wie verspotte ich ES6-Modulimporte in Jest mithilfe von import *?

Wie verspotte ich ES6-Modulimporte in Jest mithilfe von import *?

DDD
DDDOriginal
2024-10-24 05:22:02847Durchsuche

How to Mock ES6 Module Imports in Jest Using import *?

ES6-Modulimporte scherzhaft verspotten

In Jasmine ist das Verspotten eines ES6-Modulimports unkompliziert. Bei Jest kann der Prozess jedoch schwieriger sein, insbesondere wenn es sich um Module handelt, die Standardexporte verwenden. In diesem Artikel wird untersucht, wie man ES6-Modulimporte in Jest mit einem einfachen Import *-Hack verspottet.

Traditionell erforderte das Verspotten eines Imports, dass die Importe durch „requires“ ersetzt und in den Tests deklariert wurden. Dieser Ansatz kann unerwünscht sein.

<code class="javascript">// undesirable approach
import myModule from '../myModule';
import dependency from '../dependency';

describe('myModule', () => {
  // ...
});</code>

Stattdessen können wir import * nutzen, um die Exporte des Moduls direkt zu ändern, sodass wir die gewünschte Funktion oder den Standardexport nachahmen können. Für benannte Exporte:

<code class="javascript">import * as dependency from '../dependency';

// ...

dependency.doSomething = jest.fn(); // mutate the named export
myModule(2);

expect(dependency.doSomething).toBeCalledWith(4);</code>

Ähnlich gilt für Standardexporte:

<code class="javascript">import * as dependency from '../dependency';

// ...

dependency.default = jest.fn(); // mutate the default export
myModule(2);

expect(dependency.default).toBeCalledWith(4);</code>

Während diese Methode eine Problemumgehung zum Verspotten von ES6-Importen bietet, ist es wichtig zu beachten, dass dabei das importierte Modul mutiert wird , was zu Nebenwirkungen und potenziellen Problemen bei der Testausführung führen kann. Daher wird die Verwendung der nativen Mocking-Methoden von Jest, wie jest.spyOn oder jest.mock, als bevorzugter Ansatz empfohlen.

Das obige ist der detaillierte Inhalt vonWie verspotte ich ES6-Modulimporte in Jest mithilfe von import *?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn