Jest-Test schlägt fehl: TypeError: window.matchMedia ist keine Funktion

10

Dies ist meine erste Erfahrung beim Front-End-Testen. In diesem Projekt verwende ich den Jest-Snapshot-Test und erhalte den Fehler TypeError: window.matchMedia is not a function in meiner Komponente.

Ich gehe durch die Scherzdokumentation, ich fand "manuelle Mocks" Abschnitt, aber ich habe keine Idee darüber, wie man das noch macht.

    
TIJ 03.10.2016, 11:31
quelle

4 Antworten

10

Ich habe diese Technik benutzt, um eine Menge spöttischer Probleme zu lösen.

%Vor%

oder wenn du es ständig nachspionieren willst, kannst du es in deine mocks Datei schreiben, die von deinem package.json aufgerufen wurde: "setupTestFrameworkScriptFile": "<rootDir>/src/tests/mocks.js",

ref: setupTestFrameworkScriptFile

    
Maxime Beauchamp 09.03.2017 03:07
quelle
8

Jest verwendet jsdom , um eine Browserumgebung zu erstellen. JSDom unterstützt jedoch nicht window.matchMedia , so dass Sie es selbst erstellen müssen.

Jests manuelle Mocks arbeiten mit Modulgrenzen, dh erfordern / importieren Anweisungen, damit sie nicht Es ist angemessen, window.matchMedia so zu spielen, wie es ist, weil es global ist.

Sie haben daher zwei Möglichkeiten:

  1. Definieren Sie Ihr eigenes lokales matchMedia-Modul, das window.matchMedia exportiert. - Damit können Sie dann einen manuellen Mock für die Verwendung in Ihrem Test definieren.

  2. Definieren Sie eine Setup-Datei , mit der ein Mock für MatchMedia hinzugefügt wird globales Fenster.

Mit einer dieser Optionen können Sie ein matchMedia-Polyfill als Mock verwenden, der Ihre Tests zumindest erlaubt Um zu laufen oder wenn Sie verschiedene Zustände simulieren mussten, könnten Sie Ihre eigenen mit eigenen Methoden schreiben, die es Ihnen ermöglichen, das Verhalten ähnlich dem Jest zu konfigurieren fs manueller Mock

    
riscarrott 04.10.2016 15:50
quelle
8

Ich habe einen MatchMedia-Stub in meine Test-Test-Datei (oberhalb der Tests) eingefügt, wodurch die Tests bestanden werden können:

%Vor%     
Benjamin H Boruff 12.01.2017 17:21
quelle
0

Habe gerade dieses Problem festgestellt. Ich musste diese in jestGlobalMocks.ts nachahmen:

%Vor%     
techguy2000 17.03.2018 05:17
quelle

Tags und Links