【问题标题】:JSHint thinks Jasmine functions are undefinedJSHint 认为 Jasmine 函数未定义
【发布时间】:2014-11-23 08:45:02
【问题描述】:

我有一个使用 Karma+Jasmine 和 JSHint 的 Grunt 设置。每当我在我的规范文件上运行 JSHint 时,我都会收到一系列“未定义”错误,其中大部分是 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 中配置它。我曾尝试将 Jasmine 的函数作为 JSHint 全局变量添加到我的 Gruntfile 中,但将它们设置为 truefalse 并没有什么不同——当 JSHint 运行时错误仍然存​​在。

我错过了什么?我似乎无法让 JSHint 在我的规范文件中跳过对 Jasmine 函数的定义检查。

【问题讨论】:

  • 你使用什么版本的 Karma?
  • 业力 0.12.23,与业力茉莉花 0.2.0。

标签: javascript gruntjs jasmine karma-runner jshint


【解决方案1】:

次要更正 - .jshintrc 文件中的 predef 周围应该有“”。

通过将此添加到我的Gruntfile.coffee 中的jshint 选项来修复:

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】:

您可以将"jasmine": true 添加到您的.jshintrc 文件中。

【讨论】:

    【解决方案3】:

    我在 Gruntfile.js 中修复了这个问题,将 jasmine: true 添加到 jshint 任务的选项中:

    jshint:
    {
        options:
        {
            ...
            node: true,
            jasmine: true,
            ...
        },
        ...
    },
    

    和 OP 一样,我也没有使用 .jshintrc 文件。

    【讨论】:

    • 正是我想要的。 :)
    【解决方案4】:

    我相信其他答案是正确的,但我以前从未见过这样的异常,但我现在看到了。然后我注意到我的测试不在 IIFE 中。 所以我像这样将它们移到 IIFE 中,我不再收到这样的 JSHINT 警告。

    (function () {
    
      describe('foo', () => {
         it('bar', () => {
            expect(1+1).toEqual(2);
         });
      });
    
    })();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 2014-12-21
      • 2015-07-10
      • 2013-09-07
      • 2014-01-17
      • 2012-02-09
      相关资源
      最近更新 更多