我在WebStorm IDE中有一个包含简单Jest测试的node.js项目。
测试通过,但JSHint警告'test' is not defined (w117)
。
这是我的测试代码:
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1,2)).toBe(3);
});
有没有办法让JSHint识别Jest功能?
答案 0 :(得分:2)
从您向我们展示的代码中,我们只能假设test()
是一个隐式声明的全局变量。
此时我不知道这个方法属于哪个框架,但如果你想让JSHint关闭它,你必须以某种方式声明该变量:
import test from { 'somemodule'}
//or
var test = require('test');
//or
(function(test){
test('foo', () => {
expect(1).toBe(1);
});
})(test);
如果您知道自己在做什么,可以使用以下方法之一禁用该警告:
在项目文件夹或更高版本中配置.jshintrc.json文件:
{
"undef": false
}
或者您可以使用
禁用内联警告/*jshint -W117 */
test('foo', () => { /* ... */})
答案 1 :(得分:2)
JSHint 基于每个文件工作,并且不会看到'在其他文件中定义的全局变量,除非将它们添加到“全局变量”中。名单。这可以通过向您的文件中添加相应的评论(/* global test*/
)来完成 - 请参阅http://www.jshint.com/docs/,或者添加您想要全局使用的变量/函数' Predefined& #39; Preferences -> Languages & Frameworks -> Javascript -> Code Quality Tool -> JSHint -> Predefined (,separated)
中的列表。如果您使用自己的.jshintrc
(使用配置文件选项已启用),请将其添加到"全局"有:
"globals": {
"test": true
}
答案 2 :(得分:0)
这也可能是因为缺少依赖性。
确保您已安装@types/jest
npm install --save-dev @types/jest