Das Jest-Objekt
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →
Das jest-Objekt ist automatisch in jedem Testfile verfügbar. Die Methoden des jest-Objekts helfen beim Erstellen von Mocks und ermöglichen die Steuerung des Jest-Verhaltens. Es kann auch explizit importiert werden via import {jest} from '@jest/globals'.
Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →
Die TypeScript-Beispiele auf dieser Seite funktionieren nur wie dokumentiert, wenn Sie die Jest-APIs explizit importieren:
import {expect, jest, test} from '@jest/globals';
Weitere Details zur Einrichtung von Jest mit TypeScript finden Sie im Leitfaden Erste Schritte.
Methoden
- Module mocken
jest.disableAutomock()jest.enableAutomock()jest.createMockFromModule(moduleName)jest.mock(moduleName, factory, options)jest.Mocked<Source>jest.mocked(source, options?)jest.unmock(moduleName)jest.deepUnmock(moduleName)jest.doMock(moduleName, factory, options)jest.dontMock(moduleName)jest.setMock(moduleName, moduleExports)jest.requireActual(moduleName)jest.requireMock(moduleName)jest.onGenerateMock(cb)jest.resetModules()jest.isolateModules(fn)jest.isolateModulesAsync(fn)
- Mock-Funktionen
- Falsche Zeitgeber
jest.useFakeTimers(fakeTimersConfig?)jest.useRealTimers()jest.runAllTicks()jest.runAllTimers()jest.runAllTimersAsync()jest.runAllImmediates()jest.advanceTimersByTime(msToRun)jest.advanceTimersByTimeAsync(msToRun)jest.runOnlyPendingTimers()jest.runOnlyPendingTimersAsync()jest.advanceTimersToNextTimer(steps)jest.advanceTimersToNextTimerAsync(steps)jest.advanceTimersToNextFrame()jest.clearAllTimers()jest.getTimerCount()jest.now()jest.setSystemTime(now?: number | Date)jest.getRealSystemTime()
- Verschiedenes
Module mocken
jest.disableAutomock()
Deaktiviert automatisches Mocking im Modullader.
Automatisches Mocking muss über die automock-Konfigurationsoption aktiviert sein, damit diese Methode wirkt. Weitere Details siehe Dokumentation der Konfigurationsoption.
- JavaScript
- TypeScript
/** @type {import('jest').Config} */
const config = {
automock: true,
};
module.exports = config;
import type {Config} from 'jest';
const config: Config = {
automock: true,
};
export default config;
Nach Aufruf von disableAutomock() liefern alle require()-Aufrufe die echten Modulversionen (statt gemockter Versionen).
export default {
authorize: () => {
return 'token';
},
};
import utils from '../utils';
jest.disableAutomock();
test('original implementation', () => {
// now we have the original implementation,
// even if we set the automocking in a jest configuration
expect(utils.authorize()).toBe('token');
});
Nützlich, wenn deutlich weniger Abhängigkeiten gemockt werden sollen als nicht gemockt bleiben. Beispiel: Beim Testen eines Moduls mit vielen Abhängigkeiten, die als "Implementierungsdetails" betrachtet werden können, sollten diese nicht gemockt werden.
Typische "Implementierungsdetails": Sprachfeatures (z.B. Array.prototype-Methoden), Utility-Methoden (z.B. underscore, lodash) oder Bibliotheken wie React.js.
Gibt das jest-Objekt für Methodenverkettung zurück.
Bei Verwendung von babel-jest werden Aufrufe von disableAutomock() automatisch an den Codeblockanfang verschoben. Verwende autoMockOff(), um dies explizit zu vermeiden.
jest.enableAutomock()
Aktiviert automatisches Mocking im Modullader.
Details zum automatischen Mocking siehe Dokumentation der automock-Konfigurationsoption.
Beispiel:
export default {
authorize: () => {
return 'token';
},
isAuthorized: secret => secret === 'wizard',
};
jest.enableAutomock();
import utils from '../utils';
test('original implementation', () => {
// now we have the mocked implementation,
expect(utils.authorize._isMockFunction).toBeTruthy();
expect(utils.isAuthorized._isMockFunction).toBeTruthy();
});
Gibt das jest-Objekt für Methodenverkettung zurück.
Bei Verwendung von babel-jest werden Aufrufe von enableAutomock automatisch an den Codeblockanfang verschoben. Verwende autoMockOn, um dies explizit zu vermeiden.
jest.createMockFromModule(moduleName)
Erzeugt automatisch eine gemockte Version des angegebenen Moduls.
Praktisch für manuelle Mocks, die automatisches Mocking erweitern:
- JavaScript
- TypeScript
module.exports = {
authorize: () => {
return 'token';
},
isAuthorized: secret => secret === 'wizard',
};
const utils = jest.createMockFromModule('../utils');
utils.isAuthorized = jest.fn(secret => secret === 'not wizard');
test('implementation created by jest.createMockFromModule', () => {
expect(jest.isMockFunction(utils.authorize)).toBe(true);
expect(utils.isAuthorized('not wizard')).toBe(true);
});
export const utils = {
authorize: () => {
return 'token';
},
isAuthorized: (secret: string) => secret === 'wizard',
};
const {utils} =
jest.createMockFromModule<typeof import('../utils')>('../utils');
utils.isAuthorized = jest.fn((secret: string) => secret === 'not wizard');
test('implementation created by jest.createMockFromModule', () => {
expect(jest.isMockFunction(utils.authorize)).toBe(true);
expect(utils.isAuthorized('not wizard')).toBe(true);
});
So behandelt createMockFromModule verschiedene Datentypen:
Function
Erstellt eine neue Mock-Funktion ohne Parameter, die bei Aufruf undefined zurückgilt. Gilt auch für async-Funktionen.