Jest Mock in TypeScript

Rana Hasnain Khan 18 August 2022
Jest Mock in TypeScript

Wir stellen Jest Mock und seine Verwendung in TypeScript anhand eines Beispiels vor.

Jest Mock in TypeScript

Bei der Arbeit an kommerziellen Anwendungen, die für die Benutzer perfekt sein müssen, müssen wir sicherstellen, dass jedes Modul so funktioniert, wie wir es möchten. Zu diesem Zweck verwenden wir Jest-Mocks in TypeScript.

Jest Mock ist ein Testframework für eine große Webanwendung. Durch die Verwendung der Funktion mock können wir die Module einer Funktion ausspionieren, die indirekt von einem anderen Code aufgerufen wird, anstatt nur die Ausgabe zu testen.

Die Funktion mock gibt beim Aufruf undefined zurück, wenn keine Implementierung angegeben ist. Wir können ganz einfach die Funktion jest.mock() verwenden, wie unten gezeigt.

import * as dependency from '../someModule';
jest.mock('../someModule');

Die Funktion jest.mock() ändert den Typ der Abhängigkeit, weshalb wir nach dem Aufruf der Funktion jest.mock() in TypeScript die Typumwandlung verwenden müssen. Wir können die Typumwandlung einfach aufrufen, indem wir die Methode typeof in TypeScript verwenden.

Lassen Sie uns ein Beispiel durchgehen, in dem wir ein automatisches Mock verwenden, um das Modul zu testen, das wir in TypeScript importieren, wie unten gezeigt.

import { testClass } from './testClass';

jest.mock('./testClass');

const mockClass = <jest.Mock<testClass>>testClass;

Aber wenn wir das Modul oder die Klasse manuell mocken wollen, können wir das auch einfach tun. Lassen Sie uns ein Beispiel durchgehen, in dem wir die Klasse manuell verspotten, wie unten gezeigt.

import testClass from './testClass';
import testClassDependency from './testClassDependency';

const testMockClassDependency = jest.fn<testClassDependency>(() => ({

}));

it('Throw an error', () => {
  const testClass1 = new testClass(testMockClassDependency());
});

Wie wir im obigen Beispiel sehen können, erstellt die testMockClassDependency eine verspottete Objektinstanz. Anstelle von testClassDependency können wir eine Klasse, einen Typ oder eine Schnittstelle verwenden.

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn