Ich kann mehrere Dateien mit Jest testen, aber ich kann nicht herausfinden, wie eine einzelne Datei getestet wird.
Ich habe:
- Lauf
npm install jest-cli --save-dev
- Aktualisiert
package.json
: `{..." scripts ": {" test ":" jest "} ...} - Eine Reihe von Tests geschrieben.
Das Ausführen npm test
funktioniert wie erwartet (derzeit werden 14 Tests ausgeführt).
Wie teste ich eine einzelne Datei, zB testen app/foo/__tests__/bar.spec.js
?
Ich habe versucht, npm test app/foo/__tests__/bar.spec.js
(vom Projektstamm) auszuführen, erhalte jedoch die folgende Fehlermeldung:
npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'
Vielen Dank
jest bar.spec.js
gibtjest: command not found
. Ich habe bestätigt, dass Jest installiert ist (npm list -g jest
Shows[email protected]
). FWIW, wenn ichnpm test
es verwende, verwendetjest-cli
.jest-cli
ist das richtige Modul, installieren Sie es globalnpm install -g jest-cli
.jest
in npm ist ... etwas anderesnode_modules/.bin/jest args
fit
anstelle von fokussierenit
.Alles was Sie tun müssen, ist die magische Beschwörung zu singen:
Das Standalone
--
ist * nix magic zum Markieren des Endes von Optionen, was bedeutet (für NPM), dass in diesem Fall alles danach an den ausgeführten Befehl übergeben wirdjest
. Nebenbei können Sie Hinweise zur Verwendung von Scherzen anzeigen, indem Sie sagenJedenfalls singen
führt die Tests in der benannten Datei (
FooBar.js
) aus. Sie sollten jedoch beachten, dass:Jest behandelt den Namen so, dass zwischen Groß- und Kleinschreibung unterschieden wird. Wenn Sie also ein Dateisystem verwenden, bei dem die Groß- und Kleinschreibung nicht berücksichtigt wird, bei dem jedoch die Groß- und Kleinschreibung beachtet wird (z. B. Windows NTFS), kann es vorkommen, dass eine seltsame Situation auftritt.
Jest scheint die Spezifikation als Präfix zu behandeln.
Also wird die obige Beschwörung
FooBar.js
,Foo.js
undFooZilla.js
foo.js
quelle
npm ERR! Error: ENOENT, open '<path to project>/node_modules/<name of file>/package.json'
npm test ToDoForm.test.js
funktioniert, währendjest ToDoForm.test.js
nichtSo führen Sie einen Einzeltest durch:
-t
- nachdem es einen regulären Ausdruck mit dem Testnamen eingefügt hat .quelle
Verwenden
npm test
bedeutet nicht, dass Jest global installiert wird. Es bedeutet nur, dass "test" der Verwendung von jest in Ihrer package.json zugeordnet istFolgendes hat für mich auf der Stammebene des Projekts funktioniert:
args kann die Testdatei sein, die Sie ausführen möchten, oder das Verzeichnis, das mehrere Dateien enthält.
quelle
node_modules/.bin
ist die Verwendung desnpx
Befehls. Zum Beispielnpx jest [args]
Wenn Sie verwenden
yarn
, können Sie die Datei.spec.js
oder.test.js
direkt nach:Dies ist der Teil von my
package.json
with jest install als lokales Paket (entfernt die relevanten Teile):quelle
Sie können den Dateinamen verwenden mit
npm test --
:quelle
Wenn Sie
npm >= 5.2.0
scherzen und Jest lokal alsdevDependencies
mit installiert habennpm i -d jest
, können Sie Scherz auf eine bestimmte Datei ausführen, indem Sie dies tunnpx jest /path/to/your/spec.js
quelle
Wir verwenden nrwl-nx mit Winkel . In diesem Fall können wir diesen Befehl verwenden:
Anmerkungen:
npm test
führt das inpackage.json
:"test:client": "ng test client"
<ng-project>
ist der Name eines Projekts inangular.json
"defaultProject"
(inangular.json
) angegebene Parameter verwendet (Sie müssen ihn also angeben, wenn sich der Test nicht in Ihrem Standardprojekt befindet).angular.json
navigieren zu"project"
-"<ng-project>"
-"architect"
-"test"
"builder"
, die in unserem Fall ist:"@nrwl/jest:jest"
npm test server -- --help
in der Befehlszeile alle verfügbaren Optionen aus--testFile
die, die hier verwendet wirdquelle
Auf diese Weise führe ich Tests für eine bestimmte Datei dynamisch aus, ohne den Test neu zu starten. Mein Reaktionsprojekt wurde erstellt
create-react-app
Daher wird der Test auf Änderungen überwacht und der Test automatisch ausgeführt, wenn ich Änderungen vornehme.
Das sehe ich also am Ende der Testergebnisse auf dem Terminal.
Drücken Sie W.
Drücken Sie dann P.
Dies ist, nachdem ich die Datei 'index.es6.js' im Ordner 'Login' ausführen wollte
So führe ich Tests für eine bestimmte Datei aus.
quelle
Kann auch erreicht werden durch
$ jest --findRelatedTests path/to/fileA.js
ref ( https://jestjs.io/docs/en/cli#running-from-the-command-line )
Wie kann das in Nx monorepo erreicht werden, hier ist die Antwort
user@host:/path/to/workspace$ npx nx test api --findRelatedTests=apps/api/src/app/mytest.spec.ts
ref & weitere Infos ( https://github.com/satminav/nx-qa/issues/6 )
quelle
Ich habe jest so global installiert und bin dann gelaufen
jest myFileToTest.spec.js
und es hat funktioniertquelle
Sie haben zwei Möglichkeiten:
Dadurch müssen Sie Jest nicht global installieren. Sie verwenden den von Ihrem Projekt verwendeten Scherz.
quelle
Jest verwendet das, was Sie übergeben, als Regex-Muster . Das wird passen für.
Wenn Sie eine bestimmte Testdatei ausführen möchten. Der beste Weg, dies zu tun, besteht darin, den vollständigen Weg dorthin zu präzisieren. (Sie können einen bestimmten relativen Pfad wie (src / XFolder / index.spec.ts) zu genau angeben.)
Der einfachste Weg, den vollständigen Pfad im Verzeichnis und unter Linux anzugeben, ist:
Beachten Sie die Verwendung der Variablen $ PWD .
Für Windows ! (aktualisiert werden)
quelle
Mit Angular und Jest können Sie dies unter "scripts" zu package.json hinzufügen.
Um dann den Komponententest für eine bestimmte Datei auszuführen, können Sie diesen Befehl in Ihr Terminal schreiben
quelle
Keine Notwendigkeit, den vollen Weg zu passieren. Einfach benutzen
regex
pattern
.https://jestjs.io/docs/en/cli.html#--testnamepatternregex
quelle