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の関数の定義チェックをスキップさせるために何もできないようです。
マイナー修正-.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",
]
"jasmine": true
から.jshintrc
ファイル。
これをGruntfile.jsで修正し、jasmine: true
をjshintタスクのオプションに追加しました。
jshint:
{
options:
{
...
node: true,
jasmine: true,
...
},
...
},
OPと同様に、.jshintrcファイルも使用していません。
他の答えは正しいと思いますが、そのような例外は今まで見たことがありませんが、今はわかります。その後、自分のテストがIIFEにないことに気付きました。そのため、IIFEでこれらをこのように移動し、そのようなJSHINT警告を受けなくなりました。
(function () {
describe('foo', () => {
it('bar', () => {
expect(1+1).toEqual(2);
});
});
})();