我有时会忘记更改Mocha规范中的.only
个调用,然后再进行规范更改。这样做显然会影响测试覆盖率,这需要解决故障。我想在进行更改之前就抓住这些,理想情况下,这是使用ESLint并减少工作量的过程中的一部分。
答案 0 :(得分:2)
您正在寻找eslint-plugin-mocha
插件中的mocha/no-exclusive-tests
规则。如果找到任何describe.only
或it.only
,它将失败。非常有用!
此插件需要ESLint 4.0.0或更高版本。
npm install --save-dev eslint-plugin-mocha
然后在eslint配置中添加对此插件和所选规则的引用:
{ "plugins": [ "mocha" ], "rules": { "mocha/no-exclusive-tests": "error" } }
如果您也想阻止提交mocha/no-skipped-tests
或it.skip
,也有一个xit
。但是,我发现.skip
有时是有效的,所以我发现最好只是防止.only
。
该插件还进行了大量其他有用的检查,因此请务必阅读其文档!
答案 1 :(得分:1)
执行mocha时,您需要传递一个--forbid-only
参数,这会使测试失败。
您也有--forbid-pending
。
来自官方文档:
-仅禁止会导致标记为的测试仅使套件失败
-禁止待定会导致待定测试和标有skip的测试使套件失败
答案 2 :(得分:0)
我的解决方案是将一个简单的bash脚本与grep
命令一起使用,并添加到package.json
脚本部分中,如下所示:
"scripts": {
"lint:only": "RESULT=\"$(grep -rHn '[.]only\\|[.]skip' spec/ --color=always)\"; if [ -n \"$RESULT\" ]; then printf \"Oops! You left a few things in your specs! \n\n${RESULT}\n\n\"; fi",
"lint": "eslint --ext js src config scripts bin config server; yarn lint:only"
...
}
简而言之,这会在spec/
目录中查找与.only
或.skip
匹配的任何内容,如果发现有问题,则输出文件名+行。添加颜色是为了清楚起见,并且该脚本是在使用ESLint和Yarn的过程中运行的。