Facebook 的 Jest 测试框架很容易 上手,但文档 忽略了一个 烦人的方面:任何试图警告未定义符号的编辑器都会将测试语句突出显示为错误,因为 test
, expect
,并且未定义所有匹配器方法。
类似地,尝试直接使用 node
运行测试文件将失败 ReferenceError: test is not defined
。
需要添加什么 require
/ import
语句才能消除这些错误?
原文由 Dan Dascalescu 发布,翻译遵循 CC BY-SA 4.0 许可协议
节点
如果您想直接通过节点运行它们,请尝试 要求
jest
和/或jest-runtime
。也给@types/jest
试试看。检查编辑 2 以获取有关此的新信息
编辑
@types/jest
(jest-DefinitelyTyped
) 是 绝对需要的(或只是一种解决方案)。如果您 安装它(例如,开发依赖项),IDE 错误应该会消失。我刚刚在 Webstorm 上试过,它有效。编辑 2
新的 Jest@20 匹配器(例如
.resolves
和.rejects
)仍然没有在@types/jest
中定义。您可以通过以下链接跟踪其状态: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/16645 https://github.com/DefinitelyTyped/DefinitelyTyped/issues/16803不过,它应该很快就会上市!
此外,似乎不可能直接通过节点运行它。昨晚我尝试了很多不同的东西,但使用 jest 是可行的方法 - 它实际上使用了 node under the hood ,所以我认为这也是可能的。 @thymikee 关于你在 GitHub 上打开的问题明确表示不是。
编辑 3
新版本 ( 20.0.1 ) 包含最新的 Jest 定义。
皮棉
这不在这个特定问题的范围内,但它也有帮助
你在使用类似 ESLint 的东西吗?如果是这样,您将需要
eslint-plugin-jest
按照此页面中描述的步骤:https: //www.npmjs.com/package/eslint-plugin-jest ,您基本上需要将其添加为 ESLint 插件并在 ESLint 配置中设置 jest globals:
如果您计划支持 ES6 测试,您还需要
Babel
和babel-jest
具有以下 jest 配置的插件:最后,对于 Typescript 测试,您还需要
@types/jest
和ts-jest
包