Ich habe einen Test 'arbeitet mit verschachtelten Kindern' in der Datei fix-order-test.js.
Durch Ausführen der folgenden Schritte werden alle Tests in der Datei ausgeführt.
jest fix-order-test
Wie führe ich nur einen einzigen Test durch? Das Folgende funktioniert nicht, da nach einer Datei mit dem angegebenen regulären Ausdruck gesucht wird.
jest 'works with nested children'
--testNamePattern
'works with nested children'
Jest-CLI-Optionen #testNamePatternAntworten:
Verwenden Sie in der Befehlszeile das Flag
--testNamePattern
oder-t
Dadurch werden nur Tests ausgeführt, die dem von Ihnen angegebenen Testnamenmuster entsprechen. Es ist in den Jest-Dokumenten .
Eine andere Möglichkeit besteht darin, Tests im Überwachungsmodus auszuführen
jest --watch
und dann zu drücken p, um die Tests durch Eingabe des Testdateinamens zu filtern oder teinen einzelnen Testnamen auszuführen.Wenn Sie ein
it
Inneres einesdescribe
Blocks haben, müssen Sie laufenquelle
it()
Funktion und nicht der Dateiname ist. Welches ist, was ich dachte.npm test -- -t "fix order test"
./node_modules/.bin/jest --config=./.jest.config.json ./src/x/y/sites.js/sitesWorker.test.js -t 'given only incorrect sites'
Die Scherzdokumentation empfiehlt Folgendes:
oder
quelle
test.only
. Wenn Sie also nur einen Test in einer Datei ausführen möchten, die viele Testfälle in einer Reihe von Testfällen enthält, die aus vielen Dateien bestehen, müssen Sie diese einzelne Datei leider ausführenjest myTestFile.test.js
npm test
. Sie müssen die Datei selbst ausführen oder drückenp
, um einen Filter festzulegen.Wie in anderen Antworten erwähnt, werden
test.only
lediglich andere Tests in derselben Datei herausgefiltert . Tests in anderen Dateien würden also weiterhin ausgeführt.Um einen einzelnen Test durchzuführen, gibt es zwei Ansätze:
Option 1: Wenn Ihr Testname eindeutig ist, können Sie
t
im Überwachungsmodus den Namen des Tests eingeben, den Sie ausführen möchten.Option 2:
p
im Überwachungsmodus, um einen regulären Ausdruck für den Dateinamen einzugeben, den Sie ausführen möchten. (Relevante Befehle wie dieser werden angezeigt, wenn Sie Jest im Überwachungsmodus ausführen.)it
zuit.only
dem Test, den Sie ausführen möchten.Bei beiden oben genannten Ansätzen führt Jest nur den einzelnen Test in der von Ihnen angegebenen Datei aus.
quelle
Vollständiger Befehl zum Ausführen eines einzelnen Scherztests
Befehl:
node <path-to-jest> -i <you-test-file> -c <jest-config> -t "<test-block-name>"
<path-to-jest>
::node_modules\jest\bin\jest.js
node_modules/.bin/jest
-i <you-test-file>
: Pfad zur Datei mit Tests (js
oderts
)-c <jest-config>
: Pfad zu einer separaten Jest-Konfigurationsdatei (JSON). Wenn Sie Ihre Jest-Konfiguration beibehalten, müssenpackage.json
Sie diesen Parameter nicht angeben (Jest findet ihn ohne Ihre Hilfe).-t <the-name-of-test-block>
: Es ist eigentlich ein Name (der erste Parameter) vondescribe(...)
,it(...)
odertest(...)
Block.Beispiel:
Also der Befehl
node node_modules/jest/bin/jest.js -i test/math-tests.js -c test/tests-config.json -t "1 + 1 = 2"
wird getestet
it("1 + 1 = 2", ...)
, aber wenn Sie den-t
Parameter auf ändern ,"math tests"
werden beide Tests vomdescribe("math tests",...)
Block ausgeführt.Bemerkungen:
node_modules/.bin/jest
durchnode_modules\jest\bin\jest.js
.'--inspect-brk'
dem Befehl einen Parameter hinzu.Ausführen eines einzelnen Scherztests über NPM-Skripte in 'package.json'
Wenn Sie Jest installiert haben, können Sie die Syntax dieses Befehls (oben) mithilfe von NPM-Skripten vereinfachen . In
"package.json"
fügen Sie ein neues Skript zu dem"scripts"
Abschnitt:In diesem Fall verwenden wir einen Alias,
'jest'
anstatt den vollständigen Pfad dorthin zu schreiben. Außerdem geben wir den Pfad der Konfigurationsdatei nicht an, da wir ihn"package.json"
auch einfügen können und Jest ihn standardmäßig überprüft. Jetzt können Sie den folgenden Befehl ausführen:npm run test:math
und der
"math tests"
Block mit zwei Tests wird ausgeführt. Natürlich können Sie einen bestimmten Test auch anhand seines Namens angeben.Eine andere Möglichkeit wäre, den
<the-name-of-test-block>
Parameter aus dem"test:math"
Skript zu ziehen und ihn vom NPM-Befehl zu übergeben:package.json:
Befehl:
npm run test:math "math tests"
Jetzt können Sie den Namen der Lauftests mit einem viel kürzeren Befehl verwalten.
Bemerkungen:
'jest'
Befehl funktioniert mit NPM-Skripten, weilnode
.Ausführen des ausgewählten Scherztests in Visual Studio Code
Wenn Sie Visual Studio Code verwenden, können Sie diesen nutzen und den aktuell ausgewählten Test (im Code-Editor) ausführen, indem Sie die
F5
Taste drücken. Dazu müssen wir einen neuen Startkonfigurationsblock in der".vscode/launch.json"
Datei erstellen. In dieser Konfiguration werden vordefinierte Variablen verwendet, die beim Ausführen durch die entsprechenden (leider nicht immer ) Werte ersetzt werden. Von allen verfügbaren sind wir nur an folgenden interessiert:${relativeFile}
- die aktuell geöffnete Datei relativ zu${workspaceFolder}
${selectedText}
- der aktuell ausgewählte Text in der aktiven DateiAber bevor wir die Startkonfiguration schreiben, sollten wir das
'test'
Skript in unsere hinzufügen'package.json'
(falls wir es noch nicht haben).package.json:
dann können wir es in unserer Startkonfiguration verwenden.
Konfiguration starten:
Es funktioniert tatsächlich genauso wie die zuvor in dieser Antwort beschriebenen Befehle. Nachdem alles fertig ist, können wir jeden gewünschten Test ausführen, ohne die Befehlsparameter manuell neu schreiben zu müssen.
Hier ist alles, was Sie tun müssen:
'F5'
Taste.Und voila!
Um nun einen beliebigen Test auszuführen, öffnen Sie ihn einfach im Editor, wählen Sie seinen Namen aus und drücken Sie F5.
Leider wird es auf Windows-Computern nicht "voila" sein, da sie (wer weiß warum) die
${relativeFile}
Variable durch den Pfad mit umgekehrten Schrägstrichen ersetzen und Jest einen solchen Pfad nicht verstehen würde.Bemerkungen:
'--inspect-brk'
Parameter hinzuzufügen, um unter dem Debugger ausgeführt zu werden.'package.json'
.quelle
npx
, dass das Aufrufen von Jest unabhängig vom Betriebssystem erheblich vereinfacht wird.Sie können einen Test auch verwenden
f
oderx
fokussieren oder ausschließen. Zum Beispielquelle
xit
hat für mich gearbeitet, aberfit
nicht. Ich benutze [email protected].fit
arbeitet in [email protected] für mich.f
Es funktioniert nur innerhalb einer Datei.Wie oben erwähnt, können Sie den Befehl ausführen
Wenn Sie ein
it
Inneres einesdescribe
Blocks haben, müssen Sie laufenquelle
Wenn Sie
jest
als Skriptbefehl ausgeführt haben, müssennpm test
Sie den folgenden Befehl verwenden, damit er funktioniert:quelle
Mit der neuesten Scherzversion können Sie eine der folgenden Methoden verwenden , um nur einen Test auszuführen, der auch für die Testsuite gilt.
jest 'test 1'
funktioniert möglicherweise auch, wenn der Testname eindeutig ist.quelle
In VS Code konnte ich nur 1 Jest-Test mit Haltepunkten ausführen / debuggen: https://github.com/Microsoft/vscode-recipes/tree/master/debugging-jest-tests
Mein
launch.json
hat das drinnen:und das in
package.json
:test
(oderit
) intest.only
(oderit.only
). Um 1 Testsuite (mehrere Tests) auszuführen, wechseln Siedescribe
zudescribe.only
.Jest Current File
.quelle
"scripts": { "test": "jest" }
in,package.json
weil Sie den vollständigen Pfad im"program"
Parameter in angegeben habenlaunch.json
.Hier ist meine Einstellung:
./node_modules/.bin/jest --config test/jest-unit-config.json --runInBand src/components/OpenForm/OpenForm.spec.js -t 'show expanded'
Anmerkungen:
./node_modules/.bin/...
ist eine wunderbare Möglichkeit, auf die lokal installierte Scherz- (oder Mokka- oder ...) Binärdatei zuzugreifen, die mit dem lokal installierten Paket geliefert wurde. (Ja, in Ihren npm-Skripten können Siejest
mit nichts zuvor, aber dies ist praktisch in der Befehlszeile ... (das ist auch ein guter Anfang für Ihre Debugging-Konfiguration, unabhängig davon, welche IDE Sie verwenden ...)package.json
), ist dies das, was Sie brauchen.--runInBand
- Wie gesagt, Sie wissen nichts über Ihre Konfiguration, aber wenn Sie sich darauf konzentrieren, einen einzelnen Test zu entwickeln / zu reparieren, möchten Sie sich lieber nicht mit Web-Workern befassen ...-t
nicht alle Tests in dieser Datei ausführen, sondern nur einen einzigen (hier: den,show expanded
dessen Name etwas mit ' ' enthält). Der gleiche Effekt kann durch Einkleben.only()
in diese Datei erzielt werden .quelle
nur ein kleines Add-On, denn es scheint, dass es eine Art Kampf gab, ob man es benutzt
./node_modules/.bin/jest -i ...
oder nurjest -i ...
odernpm test -- -i ...
jest
funktioniert, wenn Sie es global installiert haben (wie bei npm install -g jest), eine nicht so saubere Art, mit Abhängigkeiten umzugehennpx jest -i ...
=> verwenden. Genau dafür ist npx gedacht. erspart Ihnen das Schreiben./node_modules/.bin/...
quelle
Es gibt jetzt ein nettes Scherz-Plugin dafür
jest-watch-typeahead
, das diesen Prozess viel einfacher macht.quelle
Dies funktioniert nur, wenn der Name Ihrer Testspezifikation eindeutig ist. Der obige Code würde verweisen
eine Datei mit diesem Namen:
test-name.component.spec.ts
quelle