Jeśli mamy plik testu jednostkowego my-spec.js i działający z mokką:
mocha my-spec.js
Domyślny limit czasu wynosi 2000 ms. Można go nadpisać na potrzeby częściowego testu za pomocą parametru wiersza poleceń:
mocha my-spec.js --timeout 5000
Czy można globalnie zmienić domyślny limit czasu dla wszystkich testów? tj. domyślna wartość limitu czasu będzie inna niż 2000 ms, gdy zadzwonisz:
mocha my-spec.js
Odpowiedzi:
Domyślnie Mocha odczyta plik o nazwie,
test/mocha.opts
który może zawierać argumenty wiersza poleceń. Możesz więc stworzyć taki plik, który zawiera:Za każdym razem, gdy uruchomisz Mocha w wierszu poleceń, odczyta ten plik i domyślnie ustawi limit czasu na 5 sekund.
Innym sposobem, który może być lepszy w zależności od sytuacji, jest ustawienie tego w następujący sposób
describe
w wywołaniu najwyższego poziomu w pliku testowym:Umożliwiłoby to ustawienie limitu czasu tylko dla każdego pliku.
Możesz użyć obu metod, jeśli chcesz globalnej wartości domyślnej 5000, ale ustawić coś innego dla niektórych plików.
Pamiętaj, że generalnie nie możesz używać funkcji strzałek, jeśli masz zamiar zadzwonić
this.timeout
(lub uzyskać dostęp do dowolnego innego członka zestawuthis
Mocha). Na przykład to zwykle nie zadziała :Dzieje się tak, ponieważ funkcja strzałkowa pobiera
this
zakres, w którym występuje funkcja. Mocha wywoła funkcję z dobrą wartością,this
ale ta wartość nie jest przekazywana wewnątrz funkcji strzałkowej. Dokumentacja dla Mocha mówi na ten temat :źródło
/home/me/src/proj/
Mocha będzie szukać tego pliku:/home/me/src/proj/test/mocha.opts
this
, co zwykle kończy sięthis.timeout
niepowodzeniem, jak widać w komentarzu.Po prostu dodając do poprawnej odpowiedzi, możesz ustawić limit czasu za pomocą funkcji strzałki w następujący sposób:
źródło
describe('suite', () => {...}).timeout(5000)
nie działa.setTimeout
instrukcji do testów.Dodając to dla kompletności. Jeśli (tak jak ja) używasz skryptu w swoim
package.json
pliku, po prostu dodaj--timeout
opcję do mocha:Następnie możesz uruchomić
npm run test
zestaw testów z limitem czasu ustawionym na 10000 milisekund.źródło
W obecnych wersjach Mocha limit czasu można zmienić globalnie w następujący sposób:
Po prostu dodaj powyższą linię w dowolnym miejscu zestawu testów, najlepiej u góry specyfikacji lub w osobnym pomocniku testowym.
W starszych wersjach i tylko w przeglądarce można było zmienić konfigurację globalną za pomocą
mocha.setup
.Dokumentacja nie obejmuje globalne ustawienie limitu czasu, ale oferuje kilka przykładów, w jaki sposób zmienić czas w innych typowych scenariuszy.
źródło
timeout
parametru. Wręcz przeciwnie, mochajs.org/#timeouts nakazuje wstawianie jawnychsetTimeout
instrukcji do testów.