Heim >Web-Frontend >js-Tutorial >Wie verspottet man ES6-Modulimporte im Scherz?
Einführung
Jest bietet eine umfassende Suite von Tools für Unit-Tests, einschließlich Verspotten Module, die in Ihren Code importiert werden. In diesem Artikel wird erläutert, wie ES6-Modulimporte in Jest simuliert werden, um die Herausforderung des Testens von Modulabhängigkeiten zu bewältigen.
Problembeschreibung
Das Verspotten von Modulimporten ermöglicht es Entwicklern, das Verhalten von zu isolieren ein bestimmtes Modul, während Tests für seine abhängigen Module ausgeführt werden. Allerdings ist der in Jasmine verwendete Ansatz, bei dem Importe durch Spione ersetzt werden, in Jest aufgrund seiner unterschiedlichen Testumgebung nicht direkt anwendbar.
Lösung
Jest bietet die import *-Syntax zum Importieren aller Exporte aus einem Modul als einzelnes Objekt. Diese Technik kann genutzt werden, um ES6-Modulimporte zu verspotten.
Benannte Exporte verspotten
Für benannte Exporte importieren Sie einfach das Modul mit import * und mutieren dann das exportierte Objekt zu Verspotten Sie die gewünschte Funktion:
// dependency.js export const doSomething = (y) => console.log(y);
// myModule.js import { doSomething } from './dependency'; export default (x) => { doSomething(x * 2); };
// 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); }); });
Standardexporte verspotten
Für Standardexporte können Sie sie mit import moduleName from 'modulePath' importieren. und dann den Standardwert des importierten Objekts ändern:
// dependency.js export default (y) => console.log(y);
// 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 }); });
Fazit
Mit der Import *-Syntax und dem Ändern des exportierten Objekts ist dies möglich um ES6-Modulimporte in Jest zu simulieren, sodass Sie die Funktionalität Ihrer Module testen und gleichzeitig deren Abhängigkeiten isolieren können.
Das obige ist der detaillierte Inhalt vonWie verspottet man ES6-Modulimporte im Scherz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!