web-dev-qa-db-ja.com

JSHintはJasmine関数が未定義であると考えています

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のグローバルセットはありません。また、Gruntで構成しているため、.jshintrcファイルもありません。ある時点で、GruntfileにJasmineの関数をJSHintグローバルとして追加しようとしましたが、それらをtrueまたはfalseとして設定しても違いはありませんでした。

何が欠けていますか? JSHintにスペックファイル内のJasmineの関数の定義チェックをスキップさせるために何もできないようです。

29
Ian128K

マイナー修正-.jshintrcファイルのpredefの前後に ""が必要です。

これをGruntfile.coffeejshintオプションに追加することで修正:

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",
]
22
Ian128K

"jasmine": trueから.jshintrcファイル。

68
Leon Fedotov

これをGruntfile.jsで修正し、jasmine: trueをjshintタスクのオプションに追加しました。

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

OPと同様に、.jshintrcファイルも使用していません。

10
GOTO 0

他の答えは正しいと思いますが、そのような例外は今まで見たことがありませんが、今はわかります。その後、自分のテストがIIFEにないことに気付きました。そのため、IIFEでこれらをこのように移動し、そのようなJSHINT警告を受けなくなりました。

(function () {

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

})();
0
Petur Subev