2013-07-27 5 views
16

Lassen Sie mich damit beginnen, dass ich ziemlich neu bei node.js und mocha. ist. Es bricht mir nur den Kopf. Ich habe angefangen, den tdd-Ansatz zu verwenden, und ich versuche, den Test, der gerade beginnt oder gerade beendet wird, aus den Funktionen beforeEach und afterEach zu holen, aber ich hatte kein Glück (ich interessiere mich hauptsächlich für afterEach). Zumindest konnte ich keinen ordentlichen Weg finden, es zu tun. Das einzige, was ich mir vorstellen konnte, war, die Tests und die Suite in einer Variablen zu belassen und dann auf afterEach() zu klicken, um herauszufinden, welcher Test beendet wurde.Den Testnamen in der afterEach-Funktion in Mokka erhalten

Im Idealfall, wo es heißt ‚Testname‘ Ich möchte so etwas wie suite.test.name haben

suite('my test suite', function() { 
    beforeEach(function() { 
     console.log('test name'); 
    }); 
    test('first test', function (done) { 
     var testarray = ['1', '3', '5', '7']; 
     testarray.forEach(function(num, index) { 
      console.log('num: ' + num + ' index: ' + index); 
     }, 
     done()); 
    }); 
    afterEach(){ 
     console.log('test name'); 
    } 
} 

Antwort

21

Sie erhalten den Namen des aktuellen Tests mit this.currentTest.title

afterEach(function(){ 
    console.log(this.currentTest.title) 
}) 
+0

-Danke viel. Ich habe ewig versucht, das herauszufinden. Vielleicht sollte ich etwas Zeit in Test-Debugging investieren :) – Zee

+4

Bist du dir sicher? Ich benutze Mocha 1.12 und bekomme "nach jedem" Hook: TypeError: Kann Eigenschaft 'title' von undefined nicht lesen – d512

+0

Gibt es einen Weg, auf die Liste von afterEach zuzugreifen und kann ihnen hinzugefügt werden? – Tushar

11

finde ich, dass Ich benutze this.currentTest.fullTitle() mehr als this.currentTest.title - ich bevorzuge die describe Namen auch.

+0

schön, das ist genau das, was ich wollte (der 'beschreiben' Wert + der 'it' Wert) –

+1

Check out 'This.parent.fullTitle()' gibt Ihnen den 'beschreiben' Wert für sich. – mikemaccana

+0

@mikemaccana Korrektur: Es muss 'this.currentTest.parent.fullTitle()' sein. – RReverser

0

Wenn Sie verschachtelte Blöcke beschreiben und aus irgendeinem Grund wollen Sie die Titel Teile trennen Sie etwa wie folgt entweder in den beforeEach oder afterEach Methoden tun:

function titles(test) { 
    console.log(test.title) 
    if (test.parent) { 
     titles(test.parent) 
    } 
} 

titles(this.currentTest) 
Verwandte Themen