Jestem w stanie przetestować wiele plików przy użyciu Jest, ale nie mogę wymyślić, jak przetestować pojedynczy plik.
Mam:
- Biegać
npm install jest-cli --save-dev
- Zaktualizowano
package.json
: `{..." scripts ": {" test ":" jest "} ...} - Napisał szereg testów.
Uruchamianie npm test
działa zgodnie z oczekiwaniami (obecnie wykonuje 14 testów).
Jak przetestować pojedynczy plik, np. Test app/foo/__tests__/bar.spec.js
?
Próbowałem uruchomić npm test app/foo/__tests__/bar.spec.js
(z katalogu głównego projektu), ale pojawia się następujący błąd:
npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'
Dzięki
jest bar.spec.js
dajejest: command not found
. Potwierdziłem, że Jest zainstalowany (npm list -g jest
pokazuje[email protected]
). FWIW, kiedy uruchamiamnpm test
, używa gojest-cli
.jest-cli
jest właściwym modułem, zainstaluj go globalnienpm install -g jest-cli
.jest
w npm jest ... coś innegonode_modules/.bin/jest args
fit
zamiastit
.Wszystko, co musisz zrobić, to intonować magiczną inkantację:
Autonomiczna
--
jest * nix magia do oznaczania końca opcji, co oznacza (dla NPM), że wszystko później jest przekazywane do uruchamianego polecenia, w tym przypadkujest
. Na marginesie możesz wyświetlić uwagi dotyczące używania, mówiącW każdym razie intonowanie
uruchamia testy w nazwanym pliku (
FooBar.js
). Należy jednak pamiętać, że:Jest traktuje nazwę jako rozróżniającą wielkość liter, więc jeśli używasz systemu plików bez rozróżniania wielkości liter, ale zachowującego wielkość liter (takiego jak Windows NTFS), możesz napotkać coś, co wydaje się dziwne.
Wygląda na to, że traktuje specyfikację jako przedrostek.
Tak zrobi powyższa inkantacja
FooBar.js
,Foo.js
aFooZilla.js
foo.js
źródło
npm ERR! Error: ENOENT, open '<path to project>/node_modules/<name of file>/package.json'
npm test ToDoForm.test.js
działało, ajest ToDoForm.test.js
nie działałoAby uruchomić test indywidualny:
-t
- po wstawieniu wyrażenia regularnego zawierającego nazwę testu.źródło
Używanie
npm test
nie oznacza, że jest instalowany globalnie. Oznacza to po prostu, że „test” jest odwzorowany na użycie jest w pakiecie.jsonOto, co zadziałało dla mnie na poziomie głównym projektu:
argumentami może być plik testowy, który chcesz uruchomić, lub katalog zawierający wiele plików.
źródło
node_modules/.bin
jest użycienpx
polecenia. Na przykładnpx jest [args]
jeśli używasz
yarn
, możesz dodać plik.spec.js
lub.test.js
bezpośrednio po:To jest część mojej
package.json
instalacji z instalacją jako pakiet lokalny (usunąłem odpowiednie części):źródło
Możesz użyć nazwy pliku z
npm test --
:źródło
Jeśli działa
npm >= 5.2.0
i masz zainstalowany JEST lokalnie jakodevDependencies
znpm i -d jest
was może działać JEST na danym pliku, wykonującnpx jest /path/to/your/spec.js
źródło
Używamy nrwl-NX z kątowego . W takim przypadku możemy użyć tego polecenia:
uwagi:
npm test
uruchomi skrypt testowy określony wpackage.json
:"test:client": "ng test client"
<ng-project>
to nazwa projektu wangular.json
"defaultProject"
(określony wangular.json
) (więc musisz go określić, gdy test nie znajduje się w domyślnym projekcie)angular.json
przejdź do"project"
-"<ng-project>"
-"architect"
-"test"
"builder"
, która w naszym przypadku jest:"@nrwl/jest:jest"
npm test server -- --help
aby zobaczyć wszystkie dostępne opcje--testFile
tutaj używanaźródło
W ten sposób dynamicznie uruchamiam testy dla określonego pliku bez ponownego uruchamiania testu. Mój projekt reagowania został utworzony
create-react-app
więc obserwuje test pod kątem zmian, automatycznie uruchamia test po wprowadzeniu zmian.
Tak właśnie widzę na końcu wyników testu na terminalu.
Naciśnij W.
następnie naciśnij P
to jest po tym, jak chciałem uruchomić plik „index.es6.js” w folderze „Login”
Tak właśnie uruchamiam testy na określonym pliku.
źródło
Można również osiągnąć przez
$ jest --findRelatedTests path/to/fileA.js
ref ( https://jestjs.io/docs/en/cli#running-from-the-command-line )
Jak można to osiągnąć w monorepo Nx, oto odpowiedź
user@host:/path/to/workspace$ npx nx test api --findRelatedTests=apps/api/src/app/mytest.spec.ts
ref i więcej informacji ( https://github.com/satminav/nx-qa/issues/6 )
źródło
Właśnie zainstalowałem jest globalnie, a potem uruchomiłem
jest myFileToTest.spec.js
i działałoźródło
Masz dwie opcje:
Pozwala to uniknąć instalacji Jest na całym świecie. Używasz żartu używanego przez twój projekt.
źródło
JEST użyje czego uchodzić za regex wzór . To będzie pasować do.
Jeśli chcesz uruchomić określony plik testowy. Następnie najlepszym sposobem na to jest określenie pełnej ścieżki do niego. (Możesz zbyt precyzyjnie określić określoną ścieżkę względną, taką jak (src / XFolder / index.spec.ts)).
Najprostszym sposobem na podanie pełnej ścieżki znajdującej się w katalogu i w systemie Linux jest:
Zwróć uwagę na użycie zmiennej $ PWD .
Dla Windowsa ! (do zaktualizowania)
źródło
W Angular i Jest możesz dodać to do package.json w „scripts”
Następnie, aby uruchomić test jednostkowy określonego pliku, możesz napisać to polecenie w swoim terminalu
źródło
Nie musisz przechodzić pełnej ścieżki. Po prostu użyj
regex
pattern
.https://jestjs.io/docs/en/cli.html#--testnamepatternregex
źródło