对 Jest 测试文件进行 linting 时,eslint 会抛出 `no-undef` 错误
Posted
技术标签:
【中文标题】对 Jest 测试文件进行 linting 时,eslint 会抛出 `no-undef` 错误【英文标题】:eslint throws `no-undef` errors when linting Jest test files 【发布时间】:2019-10-17 07:39:52 【问题描述】:我正在使用 Jest 编写一些规范,并使用 ESLint 来整理样式。
对于我的foo.spec.js
测试,eslint 不断抛出以下错误。似乎认为jest
、beforeEach
、afterEach
等...未在该文件中定义。
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 自动包含的,因此不需要在我的规范文件中显式导入它们。事实上,我通过 jest.setup.js
文件导入的唯一内容是
import "react-testing-library/cleanup-after-each";
import "jest-dom/extend-expect";
有没有办法消除这些错误,而不必在每个单独文件或内联文件的顶部禁用 eslint 规则?
谢谢!
【问题讨论】:
这能回答你的问题吗? How to use ESLint with Jest 【参考方案1】:请将以下内容添加到您的 .eslintrc 文件中:
"overrides": [
"files": [
"**/*.spec.js",
"**/*.spec.jsx"
],
"env":
"jest": true
]
【讨论】:
【参考方案2】:您无需添加此覆盖选项并指定jest
应该在哪些文件中可用。只添加env
字段就足够了。
.eslintrc.js:
module.exports =
env:
jest: true
,
//...
【讨论】:
这本身对我不起作用。如果我在tsconfig
中排除 spec
文件,我可以组合一个配置来修复 no-def 问题,但不会导致 jest 和生产文件之间的一致 linting,这是我寻求的圣杯.我继续我的追求。
为我工作,谢谢。如果其他人需要,我的.eslint.json
文件现在有:"env": "commonjs": true, "es2021": true, "node": true, "jest": true
谢谢。这对我有用。【参考方案3】:
在我的 jest setup.js 文件中遇到类似的问题,eslint 抛出 no-undef 错误,其中包含一些 jest.mocks。
最终使用ESLint plugin for Jest 修复它。
将插件安装为开发依赖项后,我根据插件自述文件中的说明将以下内容合并到我的 .eslintrc 配置文件中。
"extends": ["plugin:jest/recommended"],
"plugins": ["jest"]
那么 no-undef 错误就消失了。
【讨论】:
不幸的是,这对我也不起作用。以上是关于对 Jest 测试文件进行 linting 时,eslint 会抛出 `no-undef` 错误的主要内容,如果未能解决你的问题,请参考以下文章