使用 Jest 时防止出现“test/expect/etc is not defined”错误

新手上路,请多包涵

Facebook 的 Jest 测试框架很容易 上手,但文档 忽略了一个 烦人的方面:任何试图警告未定义符号的编辑器都会将测试语句突出显示为错误,因为 test , expect ,并且未定义所有匹配器方法。

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

类似地,尝试直接使用 node 运行测试文件将失败 ReferenceError: test is not defined

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

原文由 Dan Dascalescu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 976
2 个回答

节点

如果您想直接通过节点运行它们,请尝试 要求 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:

 {
  "env": {
    "jest/globals": true
  }
}

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

 "transform": {
  "^.+\\.js$": "babel-jest"
}

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

原文由 Apidcloud 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

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

原文由 Akshay Vijay Jain 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题