如何在不继续进行下一次测试的情况下强制完成Mochajs测试.如果环境被意外设置为生产并且我需要阻止测试继续,那么场景可能会阻止任何进一步的测试.
我试过抛出错误,但那些并没有停止整个测试,因为它是异步运行的.
你正在谈论的那种"测试" - 即检查环境是否为测试套件正确设置 - 应该在before钩子中完成.(或者也许在一个beforeEach钩子中,但before似乎更适合做你所描述的.)
但是,最好使用此before挂钩来设置隔离环境以运行测试套件.它采取以下形式:
describe("suite", function () {
before(function () {
// Set the environment for testing here.
// e.g. Connect to a test database, etc.
});
it("blah", ...
});
Run Code Online (Sandbox Code Playgroud)
如果有一些压倒一切的原因导致您无法使用钩子创建测试环境,而您必须执行检查,您可以这样做:
describe("suite", function () {
before(function () {
if (production_environment)
throw new Error("production environment! Aborting!");
});
it("blah", ...
});
Run Code Online (Sandbox Code Playgroud)
before钩子中的失败将阻止执行任何给定的回调it.最多,Mocha将执行after挂钩(如果您指定一个)以在失败后执行清理.
请注意,before钩子是否异步并不重要.(您的测试是否异步也无关紧要.)如果您正确编写它(并done在完成后调用,如果它是异步的),Mocha将检测到钩子中发生错误并且不会执行测试.
这摩卡继续测试你有一个失败的事后测试(在回调it)是不依赖于测试是否是异步的.摩卡不会将测试失败解释为停止整个套件的理由.即使先前的测试失败,它也会继续尝试执行测试.(正如我上面所说,钩子失败是另一回事.)
从mocha 文档开始,您可以--exit在执行测试时添加标志。无论所有测试是否成功执行,它都会停止执行。
前任:
mocha **/*.spec.js --exit
Run Code Online (Sandbox Code Playgroud)
我通常同意Glen,但由于你有一个不错的用例,你应该能够触发节点退出process.exit()命令.请参见http://nodejs.org/api/process.html#process_process_exit_code.您可以像这样使用它:
process.exit(1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13605 次 |
| 最近记录: |