在摩卡的所有测试用例之前挂钩之前

时间:2017-10-17 21:07:52

标签: javascript unit-testing mocha

我之前有#34;"我希望在所有测试用例(文件)之前运行的钩子,理想的情况是只运行一次,无论有多少测试用例和我运行的测试用例。

现在我所做的就是在"之前放置#34;挂钩在一个单独的文件中,并执行"要求(" ../ beforeAll.js")"在每个测试文件的开头,

//beforeAll.js
before('description', function(done) {
    //do something
    done()
}


//all test files
require('../beforeAll.js')
//test 
//......

我认为它会在"之前运行#34;每次测试文件运行时都会挂钩,但我不知道更好的方法。但是,当我运行所有测试用例时,"之前" hook实际上只运行一次。

所以我的问题是,为什么"之前"钩子只运行一次?在这种情况下最好的方法是什么(只运行一次)?

2 个答案:

答案 0 :(得分:5)

根据 MochaJS's documentation on hooks

before(function() {})块中的所有测试之前运行 beforeEach(function() {})块中的每个测试之前运行。

如果您想在测试开始时运行单数函数,请使用before() 如果要在每次测试之前运行函数,请使用beforeEach()

当您使用require()时,您实际上是在当前测试中“包含”该逻辑,就好像您正在复制粘贴所需文件一样。考虑到您使用before(),它会在第一次测试中运行。当第二次测试到来时,它会看到before()已经执行,因此它不会再次执行。

希望这有帮助! :)

答案 1 :(得分:1)

您可以使用mocha -r(-require)参数。

相关问题