Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止;未定义测试/预期/等;使用Jest时出错_Javascript_Syntax Highlighting_Jestjs_Undefined Symbol - Fatal编程技术网

Javascript 防止;未定义测试/预期/等;使用Jest时出错

Javascript 防止;未定义测试/预期/等;使用Jest时出错,javascript,syntax-highlighting,jestjs,undefined-symbol,Javascript,Syntax Highlighting,Jestjs,Undefined Symbol,Facebook的Jest测试框架很容易忽略一个问题:任何试图警告未定义符号的编辑器都会将测试语句突出显示为错误,因为未定义test、expect,以及所有匹配器方法 类似地,尝试直接使用节点运行测试文件将失败,出现引用错误:未定义测试 要消除这些错误,需要添加哪些要求/导入语句?节点 如果您想通过节点直接运行它们,请尝试要求jest和/或jest运行时。还可以尝试一下@types/jest 检查编辑2以获取有关此的新信息 编辑 @types/jest(jest DefinitelyTyped

Facebook的Jest测试框架很容易忽略一个问题:任何试图警告未定义符号的编辑器都会将测试语句突出显示为错误,因为未定义
test
expect
,以及所有匹配器方法

类似地,尝试直接使用
节点运行测试文件将失败,出现
引用错误:未定义测试

要消除这些错误,需要添加哪些
要求
/
导入
语句?

节点 如果您想通过节点直接运行它们,请尝试要求
jest
和/或
jest运行时
。还可以尝试一下
@types/jest

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

编辑

@types/jest
jest DefinitelyTyped
)是绝对需要的(或者只是一个解决方案)。如果您安装它(例如,开发依赖项),IDE错误应该消失。 我刚在Webstorm上试用过,效果不错

编辑2

新的Jest@20匹配器(例如,
.resolves
.rejects
)仍未在
@types/jest
中定义。您可以通过以下链接跟踪其状态:

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

而且,似乎不可能通过节点直接运行它。昨晚我尝试了很多不同的方法,但是使用jest是一种方法-它确实使用了node-under-the-hood,所以我认为这也是可能的@THERMIKEE关于您在GitHub公开发行的问题,我们明确表示,事实并非如此

编辑3

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

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

您正在使用类似于ESLint的东西吗?如果是这样,您将需要
eslint插件jest

按照本页中描述的步骤:,您基本上需要将其添加为ESLint插件,并在ESLint配置中设置jest globals:

{
  "env": {
    "jest/globals": true
  }
}
"transform": {
  "^.+\\.js$": "babel-jest"
}
如果您计划支持ES6测试,您还需要
Babel
Babel jest
插件,并具有以下jest配置:

{
  "env": {
    "jest/globals": true
  }
}
"transform": {
  "^.+\\.js$": "babel-jest"
}

最后,对于Typescript测试,您需要
@types/jest
ts jest
软件包

我使用的是VSCode和ESLint,您需要安装

将jest信息添加到您的
.eslintrc.js

{
  "plugins": ["jest"]
},
"env": {
  "jest/globals": true
}

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

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

实际上,我使用WebStorm(ESLint本身扩展了
google
预设,甚至不需要报告未定义的符号-您的代码中可以有
bogusfunc(foo)
,它不会报告),即使在添加和配置
ESLint插件jest
之后,WebStorm也会在
expect
语句下下划线。另外,无论是否使用插件运行eslint,都不能说明
test
expect
正在(未)定义。不使用TypeScript,只使用ES6。尝试以任意一种方式安装@types/jest。它在webstorm上对我有效。Visual studio代码还将测试和期望指向typescript定义。或者,如果您确实不想将其作为开发人员依赖项,请将其添加为webstorm库:File-Languages-JavaScript-libraries-download-并在typescript下搜索jest DefinitelyTypedI,在前几天使用typescript时遇到该问题,发现那些新的Jest@20在
@types/jest
中仍然没有定义匹配器。准备用一些链接更新答案感谢您提到的
eslint plugin jest
。虽然与
env
transform
相关的设置说明对我不起作用,但是did.Perfect&sweet:)上的普通设置说明(使用jest 24.9.0和eslint 6.8.0)或者如果您在package.json中定义了
eslintConfig
,则将其附加到“env”设置中也起作用