Mocha.js是否有测试失败时阻止抛出异常的通用命令行标识
解答
Mocha 原生不存在你描述的--dont-throw-exception-when-test-fails这类命令行标识。测试用例失败时返回非0退出码是Mocha的刻意设计,符合命令行工具的通用行为规范,本身就是为了让CI/CD流水线、外层调用脚本可以直接通过退出码判断测试是否通过。
如果需要实现跨平台兼容、不用针对Windows/Linux分别写shell适配的效果,可以直接用下面两种通用方案:
方案1:借助跨平台shell工具实现
先把shx安装为项目开发依赖:npm install shx --save-dev之后package.json里的test脚本直接配置为:
"test": "mocha dist/test || shx true"shx会自动抹平Windows和类Unix系统的shell命令差异,||后的逻辑在所有系统下都能正常执行,测试失败时不会向外抛出异常终止npm脚本流程。方案2:写极简Node包装脚本,无额外依赖
在项目根目录新建run-mocha.js文件,写入如下代码:const { spawnSync } = require('child_process'); // 同步执行mocha命令,继承父进程的输入输出 spawnSync('npx mocha dist/test', { stdio: 'inherit', shell: true }); // 不管mocha执行结果如何,都以0状态码正常退出 process.exit(0);再把test脚本配置为
node run-mocha.js即可,这个方案不需要安装任何第三方包,在所有安装了Node.js的环境下都能正常运行。
提示:强制把测试失败的退出码改成0,会让自动化部署、代码校验等流程无法感知测试失败的情况,除非是本地开发的特殊需求,否则不建议这么配置。
内容的提问来源于stack exchange,提问作者Surya Srivastava
相关产品推荐
相关产品推荐

