2013-07-27 19 views
16

'daki afterEach işlevine getirilirken, node.js ve mocha için yeni olduğumu söyleyerek başlayalım. Sadece kafamı kırıyor. Tdd yaklaşımını kullanmaya başladım ve başlamadan önce ya da beforeEach ve AfterEach işlevlerinden bittiği testi almaya çalışıyorum ama şansım olmadı (çoğunlukla AfterEach'la ilgileniyorum). En azından yapmanın düzgün bir yolunu bulamadım. Düşünebildiğim tek şey, testleri ve paketi bir değişkende tutmaktı ve sonra afterEach() hangi testin bittiğini görmek için bazı eşleştirmeler yapmaktı. diyorTest adımı, mocha

İdeal 'test ismi' ı

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

cevap

21

Sen this.currentTest.title

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

çok teşekkürler. Bunu anlamaya çalışırken yaşları harcadım. Belki test hata ayıklama biraz zaman yatırım yapmalıyım :) – Zee

+4

Bundan emin misiniz? Mocha 1.12 kullanıyorum ve her "sonra" kanca alıyorum: TypeError: undefined özelliği 'başlık' okunamıyor – d512

+0

Sonradan listesine erişmek için bir yol var mı ve onlara eklenebilir mi? – Tushar

11

ile cari testin adını almak ı bulmak suite.test.name gibi bir şey olsun istiyorum this.currentTest.fullTitle()'u this.currentTest.title'dan daha fazla kullanıyorum - describe adlarını da tercih ediyorum.

+0

güzel, tam olarak istediğim şey budur ('değeri' değeri + 'it' değeri) –

+1

'this.parent.fullTitle() işlevine göz atın' kendi başına 'açıklaması' değeri verir. – mikemaccana

+0

@mikemaccana Düzeltme: this.currentTest.parent.fullTitle() 'olmalıdır. – RReverser

0

Eğer blok tanımlamak iç içe olan ve nedense sen ya beforeEach veya afterEach yöntemlerde aşağıdaki gibi bir şey yapabilirsiniz başlık kısımlarını ayırmak isterseniz:

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

titles(this.currentTest) 
İlgili konular