javascript - 在 Mocha 中所有测试用例之前的钩子(Hook)之前

标签 javascript unit-testing mocha.js

我有一个“之前”钩子(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/

相关文章:

java - Robolectric 的阴影对象和模拟

unit-testing - 黄色高亮在 Istanbul 尔是什么意思?

windows - 为什么运行 npm test 结果是 : '.' is not recognized as an internal or external command, 可运行程序或批处理文件。?

javascript - 我有几组 promise ,如何解析每组 "sequentially"?

javascript - 揭示模式在 javascript 中不起作用

unit-testing - 使用 Erlang 进行单元测试时如何自动重新加载模块?

node.js - 使用 Node.js 连接到 PHP 网站并保持 session

javascript - 让div用鼠标打开而不是点击

javascript - 如何让我的循环与 setTimeout 一起工作?

Angular如何不每次都导入组件单元测试中的所有依赖项