0

Ich habe begonnen, create-react-app für meine React-Projekte zu verwenden, und als Testbibliothek kommt es mit Jest.Sequentielle Testszenarien für Jest

Als Teil meiner React-Apps möchte ich Integrationstests (sowie Unit-Tests) erstellen, da ich es nützlich finde in der Lage zu überprüfen, die glücklichen Pfade in der App funktionieren wie erwartet. Zum Beispiel: Rendert (mount) eine Seite unter Verwendung von Enzyme, aber nur die HTTP-Aufrufe (unter Verwendung von Sinon) überspielen, so dass der volle React/Redux-Flow sofort ausgeführt wird.

Vor der Verwendung von create-react-app habe ich Mocha zum Testen verwendet, und ich fand mocha-steps eine großartige Erweiterung für Integrationstests, da es Tests in einer Gruppe nacheinander ausführen kann, und behandelt stoppt, wenn ein Schritt fehlschlägt den gesamten Testlauf stoppen.

Frage: Gibt es eine Möglichkeit, Jest auf ähnliche Weise zu verhalten? Insbesondere möchte ich in der Lage sein, eine Reihe von Tests in einer Gruppe (z. B. in einem describe) anzugeben und sie nacheinander in Reihenfolge ausführen zu lassen.

Ich habe durch die Jest Dokumente, oder für andere Bibliotheken, die es erweitern, aber ich bin leer ausgegangen. Für den Moment fühlt es sich so an, als wäre die einzige Option, einen großen Test zu haben, der mich traurig macht, und ich würde es vorziehen, Jest for Mocha nicht auszutauschen, wenn ich es vermeiden kann.

Danke!

Antwort

2

jest unterstützt derzeit nicht die Markierung bestimmter Tests, die seriell ausgeführt werden (wie ava 's).

Das war requested before, aber ich glaube nicht, dass sie daran arbeiten.

Die Problemumgehung besteht darin, dass Sie angeben, welche Testdateien gleichzeitig ausgeführt werden sollen und welche seriell ausgeführt werden sollen.

Zum Beispiel benenne ich meine Unit Tests normalerweise mit *.test.js und meine Integrationstests mit *.spec.js.

Ich kann dann meine Komponententests gleichzeitig ausführen.

$ jest '(/__tests__/.*\\.test)\\.js$' 

Und ich kann meine Integration Tests seriell ausführen.

$ jest '(/__tests__/.*\\.spec)\\.ts$' --runInBand 

Ich kann die beiden in meinem package.json kombinieren.

"scripts": { 
    "unit": "jest '(/__tests__/.*\\.test)\\.js$'", 
    "integration": "jest '(/__tests__/.*\\.spec)\\.ts$' --runInBand", 
    "test": "npm run unit && npm run integration" 
} 

npm test Lauf können dann erste gleichzeitige Tests ausgeführt und dann als nächstes die Serien diejenigen.

+0

Das ist ein interessanter Workaround und könnte der beste Weg sein, etwas Ähnliches wie 'Mocha-Steps' zu bekommen. Unglücklicherweise würde ein Fehler in einem der früheren Tests in einer Gruppe höchstwahrscheinlich dazu führen, dass die nachfolgenden Tests ebenfalls fehlschlagen würden, so dass die "Tests fehlgeschlagen" -Zählung eines Laufs irreführend wäre - aber zumindest sollte es funktionieren :) Danke für die Idee! –

+0

Ich habe diese Funktion auch gewünscht. Speziell für End-to-End-Tests. Bis jemand eine PR dafür macht, müssen wir uns nur mit Workarounds begnügen. – dashmug