2013-08-18 10 views

Odpowiedz

-1

Proszę bardzo:

console.log(this.title); 
+4

To nie działa. –

+0

nie działa. powinno być this.test.title jak w @louis odpowiedź poniżej –

23

Jeśli są bezpośrednio wewnątrz wywołania zwrotnego describe, można użyć this.title o tytule describe lub this.fullTitle() uzyskać hierarchiczną tytuł Tytuły describe (przodków + tytuł tego). Jeśli jesteś wewnątrz callback do it możesz użyć odpowiednio this.test.title lub this.test.fullTitle(). Więc:

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

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

W console.log Powyższe wyjściem będzie:

top 
top 
test 
top test 

Oto pełniejsze przykład, który pokazuje, jak tytuły zmieniać w zależności od zagnieżdżenia:

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); 
    }); 
}); 

W console.log oświadczenia będą dane wyjściowe:

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

Czy możesz wskazać dokumentację Mocha gdzie dokumentacja API podobna do 'this.test.fullTitle()' jest udokumentowana? Byłoby wspaniale, gdyby opinia publiczna znała, badała i znajdowała odpowiedzi na takie pytania i więcej. – Yiling

+0

Niestety brakuje dokumentacji w tym obszarze. Jeśli obawiasz się o stabilność tego API, mogę powiedzieć, że reporterzy używają go do tworzenia swoich raportów, więc jeśli twórcy Mocha po prostu go zmienili, złamaliby reporterów stron trzecich. – Louis

+2

Trochę za późno, ale może to pomóc: https://github.com/mochajs/mocha/blob/master/lib/test.js –

1

Z poziomu beforeEach spróbuj this.currentTest.title.

przykład:

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

Stosując Mocha 3.4.1.

-1

Wewnątrz każdej metody badania

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

i można użyć:

afterEach(function(){ 
    console.log(this.currentTest.title); //displays test title for each test method  
}); 
Powiązane problemy