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!