我之前有#34;"我希望在所有测试用例(文件)之前运行的钩子,理想的情况是只运行一次,无论有多少测试用例和我运行的测试用例。
现在我所做的就是在"之前放置#34;挂钩在一个单独的文件中,并执行"要求(" ../ beforeAll.js")"在每个测试文件的开头,
//beforeAll.js
before('description', function(done) {
//do something
done()
}
//all test files
require('../beforeAll.js')
//test
//......
我认为它会在"之前运行#34;每次测试文件运行时都会挂钩,但我不知道更好的方法。但是,当我运行所有测试用例时,"之前" hook实际上只运行一次。
所以我的问题是,为什么"之前"钩子只运行一次?在这种情况下最好的方法是什么(只运行一次)?
答案 0 :(得分:5)
根据 MochaJS's documentation on hooks :
before(function() {})
在块中的所有测试之前运行
beforeEach(function() {})
在块中的每个测试之前运行。
如果您想在测试开始时运行单数函数,请使用before()
如果要在每次测试之前运行函数,请使用beforeEach()
。
当您使用require()
时,您实际上是在当前测试中“包含”该逻辑,就好像您正在复制粘贴所需文件一样。考虑到您使用before()
,它会在第一次测试中运行。当第二次测试到来时,它会看到before()
已经执行,因此它不会再次执行。
希望这有帮助! :)
答案 1 :(得分:1)
您可以使用mocha -r(-require)参数。