Zachowanie, które zauważyłeś, jest domyślnym zachowaniem Mokki. O ile nie zaznaczono inaczej, po uruchomieniu Mocha z wiersza poleceń otrzymasz reporter spec
(którego nazwa klasy to Spec
).
Wszystkie reporterów wiązane z Mocha są oparte na Base
reportera, który ma ten kod:
runner.on('pass', function(test){
stats.passes = stats.passes || 0;
var medium = test.slow()/2;
test.speed = test.duration > test.slow()
? 'slow'
: test.duration > medium
? 'medium'
: 'fast';
stats.passes++;
});
Można tam zobaczyć, że testy, które mają więcej niż liczba milisekund uznanych za wolno (--slow
opcję w komendzie linia, domyślnie 75 ms) oznaczono jako slow
. Te, które zajmują więcej niż połowę tego czasu, są oznaczone jako medium
, a te, które zajmują mniej niż ta, są oznaczone jako fast
.
Kod dla Spec
reportera ma to:
runner.on('pass', function(test){
if ('fast' == test.speed) {
var fmt = indent()
+ color('checkmark', ' ' + Base.symbols.ok)
+ color('pass', ' %s ');
cursor.CR();
console.log(fmt, test.title);
} else {
var fmt = indent()
+ color('checkmark', ' ' + Base.symbols.ok)
+ color('pass', ' %s ')
+ color(test.speed, '(%dms)');
cursor.CR();
console.log(fmt, test.title, test.duration);
}
});
Kod ten przebiega po jedno w Base
reporterem (Base
inicjuje przed Spec
). Tak więc do czasu uruchomienia programu obsługi w poprzednim fragmencie kodu test został oznaczony jako slow
, lub fast
. Jak widać, Mocha zgłasza czas tylko wtedy, gdy test nie jest szybki.
Możesz zwiększyć liczbę przypadków, w których Mokka zgłasza czas, przekazując --slow 0
do wiersza poleceń. (--slow -1
całkowicie wyłącza raportowanie czasu). Jednak teoretycznie można uzyskać testy, które trwają 0 ms, a testy te zostaną uznane za szybkie i nie będą zgłaszane w żadnym momencie.
Jeśli chcesz wymusić raportowanie czasu dla każdego testu i użyć reportera, który działa jak reporter spec
, nie widzę sposobu, aby zrobić to inaczej niż przy użyciu własnego niestandardowego reportera.
Dziękuję bardzo! Rozległe i jasne. – Rainer