JSHint认为Jest函数是未定义的

时间:2017-07-22 18:30:24

标签: javascript webstorm jshint jest

我在WebStorm IDE中有一个包含简单Jest测试的node.js项目。 测试通过,但JSHint警告'test' is not defined (w117)

enter image description here

这是我的测试代码:

const sum = require('./sum');

test('adds 1 + 2 to equal 3', () => {
    expect(sum(1,2)).toBe(3);
});

有没有办法让JSHint识别Jest功能?

3 个答案:

答案 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