如何强制Mocha要求测试用例返回值以规避Promise测试漏写return问题
Mocha强制测试用例返回值的实现方法
方案1:开启Mocha内置asyncOnly配置(运行时拦截)
你使用的最新版Mocha原生支持该配置,开启后所有测试用例必须返回Promise、为async函数或显式调用done回调,否则直接判定测试失败,完全避免漏写return导致的误判问题。
开启方式二选一:
- 命令行启动时添加参数:
mocha --async-only - 在项目Mocha配置文件(如
.mocharc.json)中添加配置:
{ "asyncOnly": true }
当你漏写return语句时,Mocha会直接抛出错误提示测试未满足异步要求,不会静默通过。
方案2:ESLint静态检测(编码阶段提前发现)
借助eslint-plugin-mocha的规则可以在写代码时就拦截漏写return的问题,无需等到测试运行。
配置步骤:
- 安装开发依赖:
npm install eslint eslint-plugin-mocha --save-dev - 在ESLint配置文件(如
.eslintrc.json)中添加如下规则:
{ "plugins": ["mocha"], "rules": { "mocha/require-return": "error" } }
补充优化写法
你可以改用async/await格式编写异步测试用例,天然不需要手动写return语句,也能从根源上避免漏写问题:
it("some test", async () => { const result = await someFunctionThatReturnsAPromise() assert.ok(result) // 其余测试逻辑 })
内容的提问来源于stack exchange,提问作者Phuo。
相关产品推荐
相关产品推荐

