预防" test / expect / etc未定义"使用Jest时出错

时间:2017-06-11 00:03:56

标签: javascript syntax-highlighting jestjs undefined-symbol

Facebook的Jest测试框架很容易get started with, but the documentation忽略annoying aspect:任何试图警告未定义符号的编辑器都会将测试语句突出显示为错误,因为{{1} },test,并且未定义所有匹配器方法。

WebStorm highlights errors in Jest test file

类似地,尝试直接使用expect运行测试文件时,node会失败。

需要添加哪些ReferenceError: test is not defined / require语句才能消除这些错误?

3 个答案:

答案 0 :(得分:11)

节点

如果您想直接通过节点运行它们,请尝试需要 jest和/或jest-runtime同时提供{{1}尝试一下。

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

修改

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

修改2

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

尽管如此,它应该可以使用!

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

编辑3

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

皮棉

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

您使用的是 ESLint 吗?如果是这样,您需要@types/jest

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

eslint-plugin-jest

如果您计划支持 ES6测试,则还需要{ "env": { "jest/globals": true } } Babel插件以及以下jest配置:

babel-jest

最后,对于 Typescript 测试,您还需要"transform": { "^.+\\.js$": "babel-jest" } @types/jest个包

答案 1 :(得分:11)

我使用VSCode和ESLint,您需要安装eslint-plugin-jest

为您的.eslintrc.js

添加好友信息
{
  "plugins": ["jest"]
},
"env": {
  "jest/globals": true
}

答案 2 :(得分:0)

添加以下.eslintrc配置已足够

{"env": 
  {
    "jest": true
  }
}