我有一个使用Karma + Jasmine和JSHint的Grunt设置。每当我在我的spec文件上运行JSHint时,我都得到一系列" undefined"错误,其中大部分是Jasmine的内置函数。例如:
Running "jshint:test" (jshint) task
js/main.spec.js
3 |describe("loadMatrix()", function() {
^ 'describe' is not defined.
4 | it("should not assign a value if no arg is passed.", function() {
^ 'it' is not defined.
(我还从我的规范要测试的JS文件中得到一些未定义的变量和函数错误,但我不确定为什么会这样,这可能是一个单独的问题。)
我的Karma配置文件中包含frameworks: [ "jasmine" ]
,我没有为JSHint设置任何全局变量,因为我没有.jshintrc
个文件在Grunt中配置它。我确实尝试在我的Gruntfile中将Jasmine的函数添加为JSHint全局变量,但是将它们设置为true
或false
并没有产生影响 - 错误仍然存在时JSHint跑了。
我错过了什么?我似乎无法做任何事情让JSHint在我的spec文件中跳过对Jasmine函数的定义检查。
答案 0 :(得分:67)
您只需将"jasmine": true
添加到.jshintrc
文件中即可。
答案 1 :(得分:22)
小修正 - 应该有""在.jshintrc文件中的predef周围。
通过将其添加到jshint
中的Gruntfile.coffee
选项中来修复:
predef: [
"jasmine"
"describe"
"xdescribe"
"before"
"beforeEach"
"after"
"afterEach"
"it"
"xit"
"it"
"inject"
"expect"
"spyOn"
]
.jshintrc
:
"predef": [
"jasmine",
"describe",
"xdescribe",
"before",
"beforeEach",
"after",
"afterEach",
"it",
"xit",
"it",
"inject",
"expect",
"spyOn",
]
答案 2 :(得分:10)
我在Gruntfile.js中修复此问题,将jasmine: true
添加到jshint任务的选项中:
jshint:
{
options:
{
...
node: true,
jasmine: true,
...
},
...
},
与OP一样,我也没有使用.jshintrc文件。
答案 3 :(得分:0)
我相信其他答案是正确的,但我以前从未见过这样的例外,但我现在看到了。然后我注意到我的测试不在IIFE中。 所以我在这样的IIFE中移动它们,我不再得到这样的JSHINT警告。
(function () {
describe('foo', () => {
it('bar', () => {
expect(1+1).toEqual(2);
});
});
})();