Facebook的Jest测试框架很容易get started with, but the documentation忽略annoying aspect:任何试图警告未定义符号的编辑器都会将测试语句突出显示为错误,因为{{1} },test
,并且未定义所有匹配器方法。
类似地,尝试直接使用expect
运行测试文件时,node
会失败。
需要添加哪些ReferenceError: test is not defined
/ require
语句才能消除这些错误?
答案 0 :(得分:11)
如果您想直接通过节点运行它们,请尝试需要 同时提供{{1}尝试一下。jest
和/或jest-runtime
。
检查编辑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
}
}