2015-03-09 3 views
1

У меня есть два тестовых наборов (я использую TDD UI мокко, которая использует suite(), тест(), а не describe() и it()):Мокко beforeEach в один люкс запущен в другой люкс

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

ответ

5

Проблема заключается в том, что beforeEach не является частью TDD UI, но BDD UI. Соответствующей функцией для TDD UI является setup. Поэтому попробуйте заменить beforeEach на setup, и все должно работать так, как вы ожидаете :).

+0

Спасибо! Это несколько [тонкий в документах] (http://mochajs.org/) - особенно, поскольку 'beforeEach()' не так расплывчато, как другие методы стиля BDD. Полный набор различий: 'before()' становится 'suiteSetup()', 'after()' становится 'suiteTeardown()', 'beforeEach()' становится 'setup() ', а' afterEach() 'становится' демонтажа() '. – mikemaccana