Das Verhalten, auf das Sie achten, ist das Standardverhalten von Mocha. Sofern nicht anders angegeben, erhalten Sie beim Ausführen von Mocha an der Befehlszeile den spec
Reporter (dessen Klassenname Spec
ist).
Alle Reporter mit Mocha gebündelt sind auf dem Base
Reporter basiert, die diesen Code hat:
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++;
});
Sie können dort sehen, dass Tests, die langsam (--slow
Option auf Befehl als mehr als die Anzahl der Millisekunden dauern Zeile, Standard 75ms) sind als slow
markiert. Diejenigen, die mehr als die Hälfte dieser Zeit benötigen, sind als medium
markiert und diejenigen, die weniger als diese nehmen, sind mit fast
markiert.
Der Code für die Spec
Reporter tut dies:
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);
}
});
Dieser Code läuft nach dem in der Base
Reporter (Base
initialisiert vor Spec
). Wenn also der Handler im vorherigen Code-Snippet ausgeführt wird, wurde der Test als slow
, medium
oder fast
markiert. Wie Sie sehen können, wird Mocha die Zeit nur dann melden, wenn der Test nicht schnell ist.
Sie können die Anzahl der Fälle erweitern, in denen Mocha die Uhrzeit meldet, indem Sie --slow 0
an die Befehlszeile übergeben. (--slow -1
schaltet die Zeitreporting vollständig aus.) Sie können jedoch theoretisch Tests erhalten, die 0ms dauern, und diese Tests werden als schnell angesehen und haben keine Zeit gemeldet.
Wenn Sie die Zeit Berichterstattung für jeden Test erzwingen wollen und einen Reporter verwenden, der wie der spec
Reporter funktioniert, sehe ich keinen anderen Weg, es als Ihre eigenen benutzerdefinierten Reporter zu tun.
Vielen Dank! Umfangreich und klar. – Rainer