Ich habe einige utils-Funktionen, die ich bei verschiedenen Jest-Tests verwende, zum Beispiel eine Funktion wie diese, um eine Abrufantwort zu verspotten:
Ich möchte diese Funktionen so teilen, dass ich sie importieren und in meinen Tests wiederverwenden kann. Zum Beispiel:
// Some .spec.jsx file
// ...
import {mockFetchJsonResponse} from 'some/path/to/shared/tests/utils.jsx'
// Then I can use mockFetchJsonResponse inside this test
// ...
Wo sollte ich solche allgemeinen utils-Funktionen platzieren?
Soll ich sie in die einbauen utils zusammen mit anderen utils-Funktionen, die ich für mein Projekt verwende? Soll ich dann auch für diese Funktionen Unit-Tests schreiben?
Himmelsjunge
Es besteht die Möglichkeit, Helfer als globale Funktionen bereitzustellen, ohne dass Module explizit importiert werden müssen.
Jest ermöglicht die Konfiguration einiger Dateien, die ausgeführt werden, bevor jede Testdatei ausgeführt wird setupFiles Konfigurationsmöglichkeit
Auch Jest bietet global Objekt, das Sie ändern können, und alles, was Sie dort ablegen, wird in Ihren Tests verfügbar sein.
Sicher, es beantwortet Ihnen nicht direkt die Frage “wohin mit den Dateien”, aber es liegt trotzdem an Ihnen. Sie müssen diese Dateien nur in angeben setupFiles Sektion. Da es keine gibt import benötigt in Tests spielt es keine Rolle.
Was das Testen von Testhelfern betrifft, bin ich mir nicht sicher. Sehen Sie, es ist Teil der Testinfrastruktur wie die Spezifikationsdatei selbst. Und wir schreiben keine Tests für Tests, sonst würde es nie aufhören. Sicher, es liegt an Ihnen – sagen Sie, ob die Logik dahinter wirklich sehr komplex und schwer zu befolgen ist. Aber wenn der Helfer eine zu komplexe/komplizierte Logik bereitstellt, würde dies dazu führen, dass die Tests selbst unmöglich zu verstehen sind, stimmen Sie zu?
ESLint behauptet weiter no-undef wenn ich solche Funktionen verwende. Daher denke ich, dass es besser ist, es einfach zu verwenden import,
– Andrey Semakin
1. Oktober 2019 um 9:54 Uhr
@AndreySemakin, ich denke, es ist in Ordnung, wenn Sie den Import verwenden, aber ich bin mir nicht sicher, ob ich sagen würde, dass es eindeutig ist besser. Ich denke, was die Reibung beim Schreiben guter sauberer Tests verringert und die Entwicklerergonomie verbessert, ist letztendlich das, was definiert besser. Das hängt immer vom Projekt und vom Team ab. Persönlich neige ich dazu, meine Linter-Einstellungen für Testdateien entspannter zu halten als für Anwendungscode. Es macht mir auch nichts aus, Globals in a zu definieren .d.ts Datei entweder.
– D.Patrick
8. November 2019 um 18:55 Uhr
@D.Patrick macht absolut Sinn. Was mich betrifft, so ziehe ich es vor, meine Linter-Einstellungen auch in Testdateien so streng wie möglich zu halten, um sicherzustellen, dass ich meinen eigenen Code nicht falsch verwende 🙂 Deshalb verwende ich lieber den Import als die Definition von Globals mit Jest.
– Andrey Semakin
11. November 2019 um 14:31 Uhr
Das ist, wonach ich gesucht habe, und eine sehr nette Geste mit der .ts-Anforderung.
– C0ZEN
28. November 2020 um 10:23 Uhr
@Hubro Ich nehme an, diese Antwort erhält hauptsächlich Stimmen wegen Ihrer Bearbeitung mit einem Teil über Typescript.
ich benutze /__tests__/ für die Tests und darin muss ich manchmal einen Ordner mit Daten hinzufügen, die von diesen Tests verwendet werden, also verwende ich /__fixtures__/ Mappe.
Ebenso platziere ich, wenn ich über Tests hinweg eine gemeinsame Logik habe, sie bei /__utils__/ Ordner (auch innerhalb /__tests__/)
¹ Egal welchen Ansatz Sie wählen, testen Sie die Testhelfer bitte nicht. Wenn der Helfer fehlschlägt, muss auch Ihr Test fehlschlagen. Sonst hilft dein Helfer überhaupt nicht.
Das Problem ist, dass diese Funktionen im Gegensatz zu Dateien in verpackt werden Prüfungen Ordner.
– Klefevre
22. Oktober 2020 um 16:40 Uhr
14344900cookie-checkShared utils-Funktionen zum Testen mit Jestyes