2015-02-25 12 views
83

Jestem w stanie przetestować wiele plików za pomocą Jest, ale nie mogę dowiedzieć się, jak przetestować pojedynczy plik.Jak przetestować pojedynczy plik przy użyciu Jest?

mam:

  • Run npm install jest-cli --save-dev
  • Updated package.json: `{... "skrypty": { "test": "JEST"} ...}
  • Wpisany szereg testy.

Uruchomienie npm test działa zgodnie z oczekiwaniami (obecnie trwa 14 testów).

Jak przetestować pojedynczy plik, np. test app/foo/__tests__/bar.spec.js?

Próbowałem uruchomiony npm test app/foo/__tests__/bar.spec.js (od nasady 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' 

Thanks

Odpowiedz

52

Jeśli npm test działa, oznacza to JEST zainstalowany jest na całym świecie. Aby uruchomić konkretny test, musisz użyć polecenia jest- npm test nie będzie działać.

Więc można uruchomić żart bezpośrednio jest bar.spec.js

Uwaga: Nie musisz wpisać pełną ścieżkę testu: argument staje się wyrażenie regularne, więc to musi być tylko częścią pełnej ścieżki.

Uwaga 2.0: Jeśli korzystałeś npm install -g jest zainstalować żart globalnie zmienić go jako npm install -g jest-cli

+1

Niestety to nie działa dla mnie. Uruchomienie 'jest bar.spec.js' daje' jest: command not found'. Potwierdziłem, że jest zainstalowany ('npm list -g jest' pokazuje' jest @ 0.1.37'). FWIW, kiedy uruchamiam używając 'test npm' używa' jest-cli'. – Musket

+3

Tak, 'jest-cli' to właściwy moduł, zainstaluj go globalnie' npm install -g jest-cli'. 'jest' w npm to ... [coś innego] (https://www.npmjs.com/package/jest) – ncuillery

+0

Dziękuję. Instalacja 'jest-cli' na całym świecie pozwoliła mi uruchomić' jest bar.spec.js'. – Musket

118

Wszystko co musisz zrobić, to zmienić zaklęcie Magick:

npm test -- SomeTestFileToRun 

Jednostkowe -- jest * nix magia do oznaczania końca opcji, co oznacza (dla NPM), że każdy następny po nim jest przekazywany do uruchamianego polecenia, w tym przypadku jest. Tak na marginesie, można żart Uwagi dotyczące wykorzystania mówiąc

npm test -- --help 

Tak czy inaczej, skandując

npm test -- Foo 

uruchamia testy w nazwie pliku (FooBar.js). Należy pamiętać jednak, że:

  • żartem traktuje nazwę jako wielkość liter, więc jeśli używasz wielkości liter, ale przypadek zachowania systemu plików (takich jak Windows NTFS), mogą wystąpić coś, co wydaje się dziwnością.

  • Jest wyświetlana jako traktująca specyfikację jako przedrostek.

Więc powyżej zaklęcie będzie

  • Run FooBar.js, Foo.js i FooZilla.js
  • , ale nie uruchamiać foo.js
+0

Dzięki, niestety pojawia się ten sam błąd podczas uruchamiania tego: 'npm ERR! Błąd: ENOENT, otwórz "<ścieżka do projektu>/node_modules//package.json'' – Musket

+7

Potrzebujesz npm v2.0, aby składnia' --' działała. – Cymen

+1

Czy istnieje jakakolwiek alternatywna metoda wykonywania testów jest wyjątkiem linii poleceń? , jakbym wysłał post do mojego istniejącego api do reszty projektu, to dostarczy mi problem z tokenem CSRF. Jak skonfigurować testowanie do istniejącego projektu? aby rozpocząć wysyłanie żądań za pomocą "/ rest-api" zamiast "http: // localhost: 8000/rest-api" –

5

Korzystanie npm test nie znaczy żart jest zainstalowanie na całym świecie. To po prostu oznacza „test” jest mapowany do korzystania żart w swoim package.json

Oto co pracował dla mnie, na poziomie głównym projektu:

node_modules/.bin/jest [args] 

args może być plik testowy ty chcesz uruchomić lub katalog zawierający wiele plików.

+0

Pracowałem dla mnie;) – wogsland

7

Aby uruchomić indywidualny Test:

ValidationUtil jej moje moduł ValidationUtil.spec.js

npm test -t ValidationUtil 

-t -> po umieścić regex zawierający nazwę testu

4

jeśli używasz yarn możesz dodać plik .spec.js lub .test.js bezpośrednio po:

yarn test src/lib/myfile.test.js 

To jest część mojego package.json z żartem zainstalować jako pakiet lokalnego (usunięte odpowiednie części):

{ 
... 
    "scripts": { 
    "test": "jest", 
    "testw": "jest --watch", 
    "testc": "jest --coverage", 
... 
    }, 
    "devDependencies": { 
    "jest": "^18.1.0", 
    ... 
    }, 

} 
Powiązane problemy