Używam Mocha do testowania moich skryptów JavaScript. Mój plik testowy zawiera 5 testów. Czy jest możliwe uruchomienie określonego testu (lub zestawu testów) zamiast wszystkich testów w pliku?
javascript
mocha
Misza Moroszko
źródło
źródło
--grep
odfiltrowałem tylko z@
tagów.mocha some/test.js
) w ogóle nie działało. dzięki!logs a bcd
który zawieralogs a
podciąg? Regexp^$
nie działa w wersji 0.10.2.W zależności od wzorca użytkowania, możesz po prostu chcieć używać tylko . Używamy stylu TDD; To wygląda tak:
Tylko ten test zostanie uruchomiony ze wszystkich plików / pakietów.
źródło
it.only
.it.only
nie będzie współpracować zgiven
od mocha-testdata . Łatwo jest zapomnieć o jego późniejszym usunięciu.eslint-plugin-mocha
ma regułę,no-exclusive-tests
która złapie cię, jeśli zapomnisz usunąć.only
.Jeśli używasz
npm test
(używając skryptów package.json), użyj dodatkowego,--
aby przekazać parametr do mokkina przykład
npm test -- --grep "my second test"
EDYCJA : Wygląda na to, że
--grep
może być trochę wybredna (prawdopodobnie w zależności od innych argumentów). Możesz:Zmodyfikuj plik package.json:
Lub alternatywnie użycie,
--bail
które wydaje się mniej wybredneźródło
--grep
może być trochę wybredny - spróbuj umieścić go zaraz po mokce we wpisie skryptu npm. W przeciwnym razienpm test -- --bail
przydaje się zwolnienie za kaucją po pierwszym nieudanym teście--grep
uratowałem mój dzień! Wielkie dzięki. PS. Korzystam z systemu Windows, działamnpm test -- --grep @tag
uruchom pojedynczy test - według nazwy pliku -
W rzeczywistości można również uruchomić pojedynczy test mokki według nazwy pliku (nie tylko „it () - string-grepping”), jeśli usuniesz wzór globu (np.
./test/**/*.spec.js
) Z pliku mocha.opts, odpowiednio utworzysz kopię bez:Oto moja mocha.single.opts (różni się tylko brakiem wspomnianej linii glob)
Tło: Chociaż możesz przesłonić różne przełączniki z pliku opts (zaczynając od
--
), nie możesz przesłonić globu . Ten link zawiera również wyjaśnienia.Wskazówka: jeśli
node_modules/.bin/mocha
cię myli, skorzystaj z lokalnego pakietu mokka. Możesz także napisać tylkomocha
, jeśli masz zainstalowany globalnie.A jeśli chcesz wygody
package.json
: Ciągle: usuń**/*
-ish glob z twojegomocha.opts
, włóż je tutaj, na wszystkie testy, zostaw je dla pojedynczego testu:stosowanie:
odpowiednio
(uwaga
--
!)źródło
Warning: Could not find any test files matching pattern: $1
Wystarczy użyć .only tylko przed „opisz”, „to” lub „kontekst”. Uruchamiam za pomocą „$ npm run test: unit” i wykonuje tylko jednostki z .only.
źródło
Cześć powyższe rozwiązania nie działały dla mnie. Innym sposobem przeprowadzenia pojedynczego testu jest
Pomaga to uruchomić przypadek testowy z jednego pliku o określonej nazwie.
źródło
-g
i nie będziesz musiał określać nazwy pliku. Jeśli nie możesz napisać wyrażenia, które jest wystarczająco selektywne, oznacza to, że nie nazywasz poprawnie swoich testów.np .:
tutaj 'test / api / controllers / test.js' jest ścieżką do pliku.
źródło
Możesz spróbować „it.only”
w tym wykona się tylko pierwszy
źródło
--forbid-only
na serwerze CI / build..only
ma tendencję do zakradania się do głównej gałęzi i wyciszania innych testów, ponieważ po prostu nie będą się już uruchamiać. Zacząłem myśleć o przepływie pracy zmieniającym się kodzie, aby uruchamiać różne testy antyfunkcyjne. Testujący powinien określić, które testy należy wykonać (testy oznaczone tagami), a nie programistę.it.only
do repoPatrząc na https://mochajs.org/#usage widzimy, że wystarczy użyć
będzie działać. Na końcu możesz pominąć „.js”.
źródło
Nie jestem pewien, dlaczego metoda grep nie działa dla mnie podczas korzystania z testu npm. Ale to działa. Z jakiegoś powodu muszę również określić folder testowy.
test npm - test / sometest.js
źródło
Skonsoliduj wszystkie testy w jednym pliku test.js, a twój pakiet json dodaj skrypty jako:
Wpisz polecenie w katalogu testowym:
źródło