gpt4 book ai didi

node.js - 如何在不继续的情况下完全结束 Node Mocha 中的测试

转载 作者:搜寻专家 更新时间:2023-10-31 22:18:19 24 4
gpt4 key购买 nike

如何强制 Mochajs 测试完全结束而不继续进行下一个测试。如果不小心将环境设置为生产环境并且我需要阻止测试继续进行,则可能会阻止任何进一步的测试。

我试过抛出错误,但这些错误并没有停止整个测试,因为它是异步运行的。

最佳答案

您所说的那种“测试”——即检查是否为测试套件运行正确设置了环境——应该在 before Hook 中完成。 (或者也许在 beforeEach Hook 中,但 before 似乎更适合做你正在描述的事情。)

但是,最好使用此 before Hook 来设置一个隔离的环境来运行您的测试套件。它将采用以下形式:

describe("suite", function () {
before(function () {
// Set the environment for testing here.
// e.g. Connect to a test database, etc.
});

it("blah", ...
});

如果有一些压倒一切的原因使您无法创建带有钩子(Hook)的测试环境并且您必须执行检查而不是您可以这样做:

describe("suite", function () {
before(function () {
if (production_environment)
throw new Error("production environment! Aborting!");
});

it("blah", ...
});

before Hook 中的失败将阻止执行给 的任何回调。至多,Mocha 会执行after 钩子(Hook)(如果你指定的话)来执行失败后的清理工作。

请注意,before 钩子(Hook)是否异步并不重要。 (你的测试是否是异步的也不重要。)如果你写得正确(并且完成后调用 done,如果它是异步的),Mocha 将检测到钩子(Hook)中发生错误并不会执行测试。

而且 Mocha 在 test(在 it 的回调中)失败后继续测试的事实与测试是否异步无关。 Mocha 不会将测试 的失败解释为停止整个套件的原因。即使之前的测试失败,它也会继续尝试执行测试。 (正如我上面所说,hook 失败是另一回事。)

关于node.js - 如何在不继续的情况下完全结束 Node Mocha 中的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25528001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com