Chcę przeprowadzić tylko jeden test z Jest.
Używam it.only
lub describe.only
, ale nadal działa wiele testów. Myślę, że uruchamia wszystkie testy od mojego ostatniego zatwierdzenia, ale nie powinien mieć tego zachowania z only
jawnie ustawioną flagą, prawda?
Co powoduje takie zachowanie i jak mogę przeprowadzić pojedynczy test?
javascript
unit-testing
jestjs
jpenna
źródło
źródło
Odpowiedzi:
fit
,fdescribe
Iit.only
,describe.only
mają ten sam cel: pomija inne testy i uruchomić tylko mnie.Źródło: https://github.com/facebook/jest/issues/698#issuecomment-177673281
Użyj mechanizmu filtrującego Jest. Kiedy przeprowadzasz testy,
możesz filtrować testy według
testname
lubfilename
. Wystarczy postępować zgodnie z instrukcjami wyświetlanymi na terminalu.Naciśnij
p
, a następnie wpisz nazwę pliku.Następnie możesz użyć polecenia
describe.only
i,it.only
które pominie wszystkie inne testy z przefiltrowanego, przetestowanego pliku.źródło
.only
działa tylko dla testów tego samego pliku?it.only
lubit.skip
dla pojedynczego testu zawierającego błąd składni, wszystkie testy zakończą się niepowodzeniem. Oczywiście kod z plików wykluczonych przez wzorzec nie zostanie wykonany. imgur.com/z9FlQEZif.only
go console.logs z komponentu Carousel tyle razy, ile jest pomijanych / niepominiętych testów dla tego komponentu w twoich wzorcach zegarka.it.only
idescribe.only
działają tylko dla modułu, w którym się znajdują. Jeśli masz problemy z filtrowaniem testów w wielu plikach, możesz użyćjest -t name-of-spec
filtrowania testów pasujących do określonej nazwy (dopasuj do nazwy w opisie lub teście).Źródło: Jest CLI Options
Na przykład skupiam się na teście, który obecnie piszę w ten sposób (ze skryptem testowym w
package.json
):npm test -- -t "test foo"
źródło
describe
bloku testowym ). W takim przypadku powinieneś zawęzić do dokładnej nazwy testu, na którym chcesz się skupić.U mnie działa, jeśli używam dwóch parametrów takich jak ten:
yarn test --watch -f "src/...fullpath.../reducer.spec.js" -t "Name of the test"
Flagi:
--watch: is optional -f: will do filtering of your files, so if you have a lot of tests with the same name, specify the full path to the exact file -t: works with 'describe' name or 'it' name of your test
źródło
To jest tak:
jest sometest.test.js -t "some expression to match a describe or a test"
Przetestuje wszystkie pliki z nazwą
sometest.test.js
i dopasowaniem na podstawie opcji -t. Jeśli chcesz przetestować tylko określony plik, możesz to zrobić:źródło
launch.json
pliku konfiguracyjnym VSCode , który uruchomi testy w konkretnym przypadku testowym: medium.com/better-programming/ ...