在我的 Chai 测试中,我经常发现自己想要使用他们的断言,例如 .to.be.empty
、.to.be.true
等,因为我发现它们比 .to.be.length(1)
或 .to.be.equal(true)
更易读。但是,这会破坏我的 linter(我使用的是默认的 Airbnb linting)。
我可以使用 //disable-eslint-line
语法,但我必须将它添加到每一行,这样看起来很乏味。
我还阅读了关于 DirtyChai 的内容库,但这需要我回顾我的整个测试库,为它们添加括号,这似乎是我不应该做的事情,只是为了让我的 linter 通过一些它应该首先可以接受的东西。
有谁知道比我上面概述的方法更好的方法来处理这个问题?
最佳答案
您可以使用 eslint-disable
禁用整个文件的规则在相关文件的顶部:
/* eslint-disable no-unused-expressions */
expect(someTrueValue).to.be.true;
但是,将它添加到每个测试文件的顶部可能会很乏味。要对所有相关文件禁用此规则,您可以:
放一个新的
.eslintc
configuration file在与测试文件相同的目录中,配置为禁用该规则。这允许您对所有其他规则使用默认配置,同时忽略该规则,特别是仅针对该文件夹中的文件。 ESLint 称之为Configuration Cascading
.{ "rules": { "no-unused-expressions": "off" } }
在主
.eslintrc
文件中使用overrides
键到 disable rules for groups of files使用 glob 模式匹配:{ "overrides": [ { "files": ["*.test.js", "*.spec.js"], "rules": { "no-unused-expressions": "off" } } ] }
这还允许您禁用其他在测试中变得麻烦的规则,例如使用 rewire
时的 no-underscore-dangle
.
关于chai - 使用 chai 消除 no-unused-expressions linter 错误的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52521020/