Ich benutze Mocha, um meine JavaScript-Inhalte zu testen. Meine Testdatei enthält 5 Tests. Ist es möglich, einen bestimmten Test (oder eine Reihe von Tests) anstelle aller Tests in der Datei auszuführen?
javascript
mocha
Mischa Moroshko
quelle
quelle
--grep
nur aus den@
Tags gefiltert .mocha some/test.js
) funktionierte überhaupt nicht. Vielen Dank!logs a bcd
die denlogs a
Teilstring enthält ? Regexp^$
funktioniert nicht mit 0.10.2.Je nach Ihrem Nutzungsmuster, können Sie nur nutzen möchten nur . Wir verwenden den TDD-Stil; es sieht aus wie das:
Nur dieser Test wird von allen Dateien / Suites ausgeführt.
quelle
it.only
.it.only
funktioniert nicht zusammen mitgiven
den Mokka-Testdaten . Und es ist leicht zu vergessen, es später zu entfernen.eslint-plugin-mocha
hat eine Regel,no-exclusive-tests
die Sie fängt, wenn Sie vergessen, zu entfernen.only
.Wenn Sie
npm test
(mit package.json-Skripten) verwenden, verwenden Sie ein Extra--
, um den Parameter an mocha weiterzuleitenz.B
npm test -- --grep "my second test"
EDIT : Sieht aus wie
--grep
kann ein wenig pingelig sein (wahrscheinlich abhängig von den anderen Argumenten). Sie können:Ändern Sie die package.json:
Oder alternativ verwenden,
--bail
was weniger pingelig zu sein scheintquelle
--grep
kann etwas pingelig sein - versuchen Sie es direkt nach Mokka im npm- Skripteintrag . Andernfallsnpm test -- --bail
ist es nützlich, nach dem ersten fehlgeschlagenen Test--grep
mein Tag gerettet wurde! Vielen Dank. PS. Ich bin unter Windows und laufenpm test -- --grep @tag
Führen Sie einen einzelnen Test durch - nach Dateiname -
Tatsächlich kann man auch einen einzelnen Mokka-Test nach Dateinamen ausführen (nicht nur nach „it () - String-Grepping“), wenn Sie das Glob-Muster (z. B.
./test/**/*.spec.js
) aus Ihren mocha.opts entfernen bzw. eine Kopie erstellen, ohne:Hier ist meine mocha.single.opts (es ist nur anders, wenn die oben genannte Glob-Linie fehlt)
Hintergrund: Während Sie die verschiedenen Schalter aus der opts-Datei (beginnend mit
--
) überschreiben können , können Sie den Glob nicht überschreiben . Dieser Link enthält auch einige Erklärungen.Hinweis: Wenn
node_modules/.bin/mocha
Sie verwirrt sind, verwenden Sie das lokale Paket Mokka. Sie können auch nur schreibenmocha
, wenn Sie es global installiert haben.Und wenn Sie den Komfort von
package.json
: Trotzdem: Entfernen Sie den**/*
-ish Glob von Ihremmocha.opts
, fügen Sie sie hier ein, für alle Tests, lassen Sie sie für die einzelnen Tests weg:Verwendung:
beziehungsweise
(Beachten Sie die
--
!)quelle
Warning: Could not find any test files matching pattern: $1
Verwenden Sie einfach .nur vor 'beschreiben', 'es' oder 'Kontext'. Ich führe "$ npm run test: unit" aus und es werden nur Einheiten mit .only ausgeführt.
quelle
Hallo, obige Lösungen haben bei mir nicht funktioniert. Die andere Möglichkeit, einen einzelnen Test auszuführen, ist
Dies hilft, einen Testfall aus einer einzelnen Datei mit einem bestimmten Namen auszuführen.
quelle
-g
und für den Sie keinen Dateinamen angeben müssen. Wenn Sie keinen Ausdruck schreiben können, der selektiv genug ist, bedeutet dies, dass Sie Ihre Tests nicht richtig benennen.z.B :
Hier ist 'test / api / controller / test.js' der Dateipfad.
quelle
Sie können "it.only" versuchen
In diesem Fall wird nur der erste ausgeführt
quelle
--forbid-only
den CI / Build-Server ausgeführt werden..only
hat die Tendenz, sich in den Hauptzweig zu schleichen und die anderen Tests stumm zu schalten, da sie einfach nicht mehr ausgeführt werden. Ich dachte an den Workflow, Code zu ändern, um verschiedene Tests als Anti-Feature auszuführen. Der Testläufer sollte bestimmen, welche Tests ausgeführt werden sollen (auch als getaggte Tests bezeichnet), nicht der Entwickler.it.only
Wenn wir in https://mochajs.org/#usage schauen, sehen wir, dass einfach verwenden
wird funktionieren. Sie können die '.js' am Ende weglassen.
quelle
Ich bin mir nicht sicher, warum die grep-Methode bei Verwendung des npm-Tests bei mir nicht funktioniert. Dies funktioniert jedoch. Ich muss auch den Testordner aus irgendeinem Grund angeben.
npm test - test / sometest.js
quelle
Konsolidieren Sie alle Ihre Tests in einer test.js-Datei und fügen Sie Ihrem Paket json Skripte hinzu als:
Geben Sie den Befehl in Ihr Testverzeichnis ein:
quelle