linst Jest测试文件时,eslint抛出“ no-undef”错误

时间:2019-05-31 16:30:06

标签: javascript unit-testing jestjs eslint

我正在使用Jest编写一些规范,并使用ESLint编写样式。

对于我的foo.spec.js测试,eslint不断抛出以下错误。似乎认为jestbeforeEachafterEach等在该文件中未定义。

   11:1   error  'beforeEach' is not defined  no-undef
   12:3   error  'jest' is not defined        no-undef
   14:13  error  'jest' is not defined        no-undef
   18:1   error  'afterEach' is not defined   no-undef
   20:1   error  'describe' is not defined    no-undef
   21:3   error  'it' is not defined          no-undef
   25:5   error  'expect' is not defined      no-undef
   28:5   error  'expect' is not defined      no-undef
   31:5   error  'expect' is not defined      no-undef
   34:3   error  'it' is not defined          no-undef
   38:5   error  'expect' is not defined      no-undef
   41:5   error  'jest' is not defined        no-undef
   42:5   error  'expect' is not defined      no-undef
   43:5   error  'expect' is not defined      no-undef
   46:3   error  'it' is not defined          no-undef
   54:5   error  'expect' is not defined      no-undef
   58:5   error  'jest' is not defined        no-undef

我相信这些被jest自动包含,因此不需要在我的spec文件中显式导入它们。实际上,我通过jest.setup.js文件导入的唯一内容是

import "react-testing-library/cleanup-after-each";
import "jest-dom/extend-expect";

有没有一种方法可以消除这些错误而不必禁用每个文件或内联文件顶部的eslint规则?

谢谢!

3 个答案:

答案 0 :(得分:5)

您无需添加此覆盖选项并指定 jest 应在哪些文件中可用。仅添加 env 字段就足够了。

.eslintrc.js

module.exports = {
  env: {
    jest: true
  },
//...
}

答案 1 :(得分:1)

请在您的.eslintrc文件中添加以下内容:

"env": {
    "jest": true
}

答案 2 :(得分:1)

eslint在其中包含一些jest.mocks的jest setup.js文件中抛出了no-undef错误时也遇到了类似的问题。

最终使用ESLint plugin for Jest对其进行了修复。

将插件安装为dev依赖项后,按照插件自述文件中的说明,将以下内容合并到.eslintrc配置文件中。

{
  "extends": ["plugin:jest/recommended"],
  "plugins": ["jest"]
}

然后no-undef错误消失了。