使用Jest时,防止"test/expect/etc未定义"错误

Dan*_*scu 7 javascript syntax-highlighting undefined-symbol jestjs

Facebook的玩笑测试框架很容易上手,但文档忽略了一个恼人的方面:测试语句将被突出显示,通过试图警告未定义符号的任何编辑错误,因为test,expect和没有定义的所有匹配方法.

WebStorm突出了Jest测试文件中的错误

同样,尝试直接运行测试文件node将失败ReferenceError: test is not defined.

需要添加什么require/ import声明才能消除这些错误?

Aks*_*ain 17

添加以下 .eslintrc 配置就足够了

{"env": 
  {
    "jest": true
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 完美又甜蜜:)(使用 jest 24.9.0 和 eslint 6.8.0) (3认同)

Api*_*oud 16

节点

如果要直接通过节点运行它们,请尝试要求 jest和/或jest-runtime.@types/jest尝试一下.

检查编辑2以获取有关此内容的新信息

编辑

@types/jest(jest-DefinitelyTyped)绝对需要(或只是一个解决方案).如果你安装它(例如,dev依赖),IDE错误应该消失.我刚刚在Webstorm上试过它,它可以工作.

编辑2

新的Jest @ 20 Matchers(例如,.resolves.rejects)仍未定义@types/jest.您可以在以下链接中跟踪其状态:https : //github.com/DefinitelyTyped/DefinitelyTyped/pull/16645 https://github.com/DefinitelyTyped/DefinitelyTyped/issues/16803

不过它应该很快就可以使用!

此外,似乎无法直接通过节点运行它.昨晚我尝试了很多不同的东西,但是使用jest是要走的路 - 它真的使用了引擎盖下的节点,所以我认为它也是可能的.@tymikee对你在GitHub打开的问题明确表示不是.

编辑3

新版本(20.0.1)包含最新的Jest定义.

皮棉

这不在这个特定问题的范围内,但它也有帮助

你在使用像ESLint这样的东西吗?如果是这样,你需要eslint-plugin-jest

按照本页描述的步骤操作:https://www.npmjs.com/package/eslint-plugin-jest,您基本上需要将其添加为ESLint插件并在ESLint配置中设置jest globals:

{
  "env": {
    "jest/globals": true
  }
}
Run Code Online (Sandbox Code Playgroud)

如果您计划支持ES6测试,您还需要Babelbabel-jest使用以下jest配置插件:

"transform": {
  "^.+\\.js$": "babel-jest"
}
Run Code Online (Sandbox Code Playgroud)

最后,对于Typescript测试,你也需要@types/jestts-jest

  • 非常感谢您提到“eslint-plugin-jest”。尽管与“env”和“transform”相关的设置说明对我不起作用,但 https://www.npmjs.com/package/eslint-plugin-jest 上的普通设置说明却对我有用。 (2认同)

onm*_*133 13

我正在使用VSCode和ESLint,你需要安装eslint-plugin-jest

添加好友信息给你的 .eslintrc.js

{
  "plugins": ["jest"]
},
"env": {
  "jest/globals": true
}
Run Code Online (Sandbox Code Playgroud)