我有两个测试套件(我使用的是Mocha的TDD UI,它使用suite()
,test()而不是describe()
和it()
):
suite('first suite'), function(){
....
})
suite('second suite', function(){
beforeEach(function(done){
console.log('I SHOULD NOT BE RUN')
this.timeout(5 * 1000);
deleteTestAccount(ordering, function(err){
done(err)
})
})
...
}()
运行
mocha -g 'first suite
仅运行第一个套件中的测试,但是运行beforeEach,并在控制台上打印I SHOULD NOT BE RUN
。如何使
beforeEach()
仅在包含在其中的套件中运行?注意:我可以通过以下方法解决此问题:
beforeEach(function(done){
this.timeout(5 * 1000);
if ( this.currentTest.fullTitle().includes('second suite') ) {
deleteTestAccount(ordering, function(err){
done(err)
})
} else {
done(null)
}
})
最佳答案
问题在于beforeEach
不是TDD UI的一部分,而是BDD UI。 TDD UI的相应功能是setup
。因此,尝试将beforeEach
替换为setup
,一切都将按您期望的方式工作:)。