Il comportamento rilevato è il comportamento predefinito di Mocha. Se non diversamente specificato, quando si esegue Mocha sulla riga di comando, si ottiene il reporter spec
(il cui nome classe è Spec
).
Tutti i giornalisti in bundle con la moka si basano sul Base
giornalista, che ha questo codice:
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++;
});
Si può vedere lì che i test che prendono più del numero di millisecondi ritenuti lento (opzione --slow
al comando linea, 75 ms predefiniti) sono contrassegnati come slow
. Quelli che impiegano più della metà di questo tempo sono contrassegnati come medium
e quelli che richiedono meno di questo sono contrassegnati con fast
.
Il codice per la Spec
giornalista fa questo:
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);
}
});
Questo codice viene eseguito dopo quello nella Base
giornalista (Base
inizializza prima Spec
). Pertanto, quando viene eseguito il gestore nel frammento di codice precedente, il test è stato contrassegnato come slow
, medium
o fast
. Come puoi vedere, Mocha riporterà il tempo solo se il test non è veloce.
È possibile espandere il numero di casi in cui Mocha riporterà il tempo passando --slow 0
alla riga di comando. (--slow -1
disattiva completamente il tempo di segnalazione.) Tuttavia, in teoria è ancora possibile ottenere test che richiedono 0ms, e questi test saranno considerati rapidi e non avranno alcun tempo riportato.
Se si desidera forzare la segnalazione del tempo per ogni test e utilizzare un reporter che funzioni come il reporter spec
, non vedo un modo per farlo se non utilizzando il proprio reporter personalizzato.
Grazie mille! Ampio e chiaro – Rainer