【问题标题】:Bypass ESLint's `no-unused-var` for Should in a Mocha test在 Mocha 测试中绕过 ESLint 的 `no-unused-var`
【发布时间】:2015-08-27 14:02:42
【问题描述】:

我在我的所有文件(包括测试文件)上使用 ESLint,并使用 no-unused-var: true 规则。我在 Mocha 测试中使用了 Should.js,在其中一个文件中,should 变量出现错误。与其他测试的快速比较表明,在其他文件中,我至少有一行以should 开头(即should.not.exist(err);),而在这个特定文件中,我仅以属性形式使用它(即a.should.equal(b) )。

没有为整个文件关闭规则,或者将完全可读的测试强制转换为should 的变量使用,有什么办法解决这个问题吗?我可以只为 should 变量关闭规则吗?也许为它添加一个例外?或者(希望)更优雅的解决方案?

【问题讨论】:

  • 据我所知,eslint 无法仅为 should.js 禁用它,我认为您不需要为此做点什么。发生这种 linter 违规是因为其中一行包含断言,只有像 a.should.be.true 这样的 getter 会违规。 github.com/shouldjs/should.js/pull/64 中有待处理的 PR,我正试图在接下来的 2 周内解决这个问题。所以 tl;dr 现在暂时不使用 getter,而只使用等效函数(如 .true -> .equal(true),可读性较差,但没有违规)。

标签: javascript mocha.js lint should.js eslint


【解决方案1】:

在这个特定的文件中,您可以只需要而不是声明。

var should = require('should');

改为

require('should');

【讨论】:

    【解决方案2】:

    好吧,似乎没有一个优雅的解决方案,但我想我想出了一个接近的近似值:我只是在我的before() 钩子中添加了一行,简单地说明should;。由于 this 评估为 should 对象,或者换句话说是“真实”值,因此可以将其视为无操作。副作用是现在should 变量已“使用”,ESLint 不会抛出警告。

    我将暂时搁置这个答案,希望你们中的某个人有更好的解决方案。

    根据要求,这里是a gist showing the hack in action

    【讨论】:

    • 你能发布你的测试要点吗,你在哪里使用 getter 并且这个技巧对 eslint 有帮助?我想将其添加到常见问题解答中。
    • @denbardadym 为每个请求添加了要点 - 测试显然被混淆了,但我认为这个想法得到了保留。
    • 您可以使用选项"varsIgnorePattern": "^should$"
    • 另外,你也可以使用下面的语法should(body).have.property('link')
    • 哈!刚刚评论了你的要点,这与上面的答案相同!后来发现了这个问题!
    猜你喜欢
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 2020-03-01
    • 2020-01-25
    • 2021-02-22
    • 2018-06-27
    • 2020-04-09
    相关资源
    最近更新 更多