如何自动检查摩卡规格中意外遗留的“ .only”电话?

时间:2019-01-03 01:24:48

标签: javascript mocha eslint

我有时会忘记更改Mocha规范中的.only个调用,然后再进行规范更改。这样做显然会影响测试覆盖率,这需要解决故障。我想在进行更改之前就抓住这些,理想情况下,这是使用ESLint并减少工作量的过程中的一部分。

3 个答案:

答案 0 :(得分:2)

您正在寻找eslint-plugin-mocha插件中的mocha/no-exclusive-tests规则。如果找到任何describe.onlyit.only,它将失败。非常有用!

docs:

  

此插件需要ESLint 4.0.0或更高版本。

npm install --save-dev eslint-plugin-mocha
     

然后在eslint配置中添加对此插件和所选规则的引用:

{
  "plugins": [
    "mocha"
  ],
  "rules": {
    "mocha/no-exclusive-tests": "error"
  }
}

如果您也想阻止提交mocha/no-skipped-testsit.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的过程中运行的。