2013-08-18 15 views

risposta

-1

Qui si va:

console.log(this.title); 
+4

questo non funziona. –

+0

non funziona. dovrebbe essere this.test.title come nella risposta @louis sotto –

23

Se ci si trova direttamente all'interno di un callback a describe, si può usare this.title per il titolo del describe o this.fullTitle() per ottenere il titolo gerarchico dei titoli delle describe (antenati + il titolo di questo). Se si è all'interno di una richiamata su it, è possibile utilizzare rispettivamente this.test.title o this.test.fullTitle(). Quindi:

describe("top", function() { 
    console.log(this.title); 
    console.log(this.fullTitle()); 

    it("test", function() { 
     console.log(this.test.title); 
     console.log(this.test.fullTitle()); 
    }); 
}); 

I console.log dichiarazioni di cui sopra uscita volontà:

top 
top 
test 
top test 

Ecco un esempio più completo che mostra come i titoli cambiano a seconda di nidificazione:

function dump() { 
    console.log("running: (fullTitle)", this.test.fullTitle(), "(title)", 
       this.test.title); 
} 

function directDump() { 
    console.log("running (direct): (fullTitle)", this.fullTitle(), "(title)", 
       this.title); 
} 

describe("top", function() { 
    directDump.call(this); 
    it("test 1", dump); 
    it("test 2", dump); 
    describe("level 1", function() { 
     directDump.call(this); 
     it("test 1", dump); 
     it("test 2", dump); 
    }); 
}); 

Le console.log dichiarazioni saranno di uscita:

running (direct): (fullTitle) top (title) top 
running (direct): (fullTitle) top level 1 (title) level 1 
running: (fullTitle) top test 1 (title) test 1 
running: (fullTitle) top test 2 (title) test 2 
running: (fullTitle) top level 1 test 1 (title) test 1 
running: (fullTitle) top level 1 test 2 (title) test 2 
+1

Puoi indicare la documentazione di Mocha dove sono documentati API come 'this.test.fullTitle()'? Sarebbe fantastico per il pubblico conoscere, esplorare e trovare risposte a domande come questa e altro. – Yiling

+0

Purtroppo, la documentazione in quest'area è carente. Se sei preoccupato per la stabilità di questa API, quello che posso dire è che i reporter lo usano per produrre i loro report, quindi se gli sviluppatori di Mocha lo hanno appena cambiato, avrebbero interrotto i reporter di terze parti. – Louis

+2

Un po 'tardi, ma questo potrebbe aiutare: https://github.com/mochajs/mocha/blob/master/lib/test.js –

1

Dall'interno di uno beforeEach, provare this.currentTest.title.

Esempio:

beforeEach(function(){ 
    console.log(this.currentTest.title); 
}) 

Utilizzando Mocha 3.4.1.

-1

all'interno di qualsiasi metodo di prova

it('test method name'), function() { var testName= this.test.title; } 

e si può utilizzare:

afterEach(function(){ 
    console.log(this.currentTest.title); //displays test title for each test method  
}); 
Problemi correlati