Warum meldet Mocha nicht für jeden Test Zeit?

9

Unter Verwendung von Mocha, um node.js Unit Tests durchzuführen, erhalte ich z.B. diese Ausgabe:

%Vor%

Warum bekomme ich für zwei Testfälle die Testzeit (65/53 ms), aber nicht für die anderen zwei Fälle? Gibt es eine bestimmte Option? Ich habe nur --slow gefunden, aber nicht mehr.

Add: Wenn die Tests langsam sind, bekomme ich mal für alle Testfälle:

%Vor%

es scheint, wenn die Testfälle sehr schnell sind, dann bekomme ich keine Zeit ..?

    
Rainer 12.08.2015, 20:51
quelle

1 Antwort

21

Das Verhalten, das Sie bemerkt haben, 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 mit Mocha gebündelten Reporter basieren auf dem Base -Reporter, der diesen Code hat:

%Vor%

Sie können dort sehen, dass Tests, die mehr als die Anzahl von Millisekunden dauern, die als langsam angesehen werden (Option --slow in der Befehlszeile, Standard 75 ms) als slow markiert sind. Diejenigen, die mehr als die Hälfte dieser Zeit benötigen, sind als medium markiert, und diejenigen, die weniger als diese Zeit benötigen, sind als fast gekennzeichnet.

Der Code für den Spec -Reporter tut dies:

%Vor%

Dieser Code wird ausgeführt, nachdem derjenige im Base -Reporter ( Base initialisiert vor Spec ) ist. Zu dem Zeitpunkt, zu dem der Handler im vorherigen Code-Snippet ausgeführt wurde, 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 deaktiviert die Zeitberichterstattung vollständig.) 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 Zeitberichte für jeden Test erzwingen und einen Reporter verwenden möchten, der wie der spec -Reporter funktioniert, sehe ich keinen anderen Weg, als einen eigenen benutzerdefinierten Reporter zu verwenden.

    
Louis 17.08.2015, 16:48
quelle

Tags und Links