gpt4 book ai didi

node.js - Mocha + Chai 命令行退出,错误代码编号等于测试失败计数

转载 作者:搜寻专家 更新时间:2023-11-01 00:29:51 25 4
gpt4 key购买 nike

我是 Node 的新手,正在尝试创建一个独立的程序。我正在使用 Mocha 和 Chai 来测试我的功能(这也是新功能),并使用此 Node 运行脚本运行它们:

"test": "mocha tools/testSetup.js \"src/**/*.spec.js\" --reporter progress"

(我也尝试过不使用 reporter 选项)。测试运行良好,当一个测试失败时,它会继续运行其余的,然后创建一个(非常详细的)失败报告。但是随后测试服退出 Node ,错误代码等于失败的测试数,因此如果三个测试失败则错误代码为 3,如果没有测试失败则错误代码为 0。这会在 at 时产生糟糕的输出至少一个测试失败,类似于应用程序崩溃。

这是设计使然吗?我应该做些什么来“捕捉”错误吗?还是我做错了什么,无论测试是否失败,退出代码实际上应该只是 0?

最佳答案

Is this by design?

是的,在 npm 和 Mocha 方面都是如此。

通常,当您运行测试套件时,您希望测试运行器在出现任何故障时具有非零退出代码。为什么?非零退出代码使得调用测试运行器的代码很容易知道测试是否通过。无需解析报告或其他任何内容。只需检查退出代码。对于调用测试运行器的代码不关心的情况,它可以忽略退出代码。

Mocha恰好以失败次数退出,这满足了在出现任何失败时使用非零退出代码的最低要求。

npm的角度来看,你得到的硬失败,看起来像崩溃,也是故意的。问题在于 npm 通常用于安装包,并且某些包会在安装过程中执行测试运行。你希望那里的失败是一个艰难的失败。或许可以将 npm 设计为将用户在命令行发出普通 npm test 与作为安装一部分的测试运行区分开来。这将是对 npm 的增强,但当前行为并非偶然。

am I supposed to do something to "catch" the error?

如果您想做的是防止 npm 给您一个 ELIFECYCLE 错误,您可以通过执行 来消除错误mocha [参数] || true 但这会有效地使调用 npm test 的任何东西都无法通过退出代码立即检测到测试是否通过。您可能使用的任何依赖于 npm test 的工具都无法知道测试是否通过。 我不会这样做。

Or am I doing something wrong and the exit code should actually be just 0 regardless of tests failing?

不,如上所述,Mocha 的退出代码是设计使然。如果您要修改您的测试套件以尝试解决它,您将破坏一个功能。

就我个人而言,我通过在 npm 之外调用我的测试套件(例如,通常这意味着运行 gulp test 因为我使用 gulp 来运行构建任务),并且我保留 npm test 用于那些测试失败确实是严重失败的情况。

关于node.js - Mocha + Chai 命令行退出,错误代码编号等于测试失败计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40788506/

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