我有一个“之前”钩子(Hook),我想在所有测试用例(文件)之前运行它,理想的情况是运行一次且只运行一次,无论我运行多少测试用例和哪个测试用例。
现在我要做的是把那个“之前”钩子(Hook)放在一个单独的文件中,并在每个测试文件的开头执行“require(”../beforeAll.js“)”,
//beforeAll.js
before('description', function(done) {
//do something
done()
}
//all test files
require('../beforeAll.js')
//test
//......
我认为每次运行测试文件时都会运行“之前” Hook ,但我不知道更好的方法。但是,当我运行所有测试用例时,“之前” Hook 实际上只运行一次。
所以我的问题是,为什么“之前”钩子(Hook)只运行一次?在这种情况下最好的方法是什么(只运行一次)?
最佳答案
根据 MochaJS's documentation on hooks :before(function() {})
在 block 中的所有测试之前运行。beforeEach(function() {})
在 block 中的每个测试之前运行。
如果您想在测试开始时运行单个函数,请使用 before()
.
如果您想在每次测试之前运行一个函数,请使用 beforeEach()
.
当您使用 require()
,您实际上是在当前测试中“包含”该逻辑,就好像您正在复制粘贴所需的文件一样。考虑到您使用 before()
,它在第一次测试中运行。到第二次测试时,它看到 before()
已经执行,所以不会再次执行。
希望这可以帮助! :)
关于javascript - 在 Mocha 中所有测试用例之前的钩子(Hook)之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46799242/