2014-09-29 4 views
29

Ich habe ein Grunt-Setup, das Karma + Jasmine und JSHint verwendet. Jedes Mal, wenn ich JSHint in meiner Spezifikationsdatei starte, bekomme ich eine Reihe von "undefinierten" Fehlern, von denen die meisten für Jasmines eingebaute Funktionen sind. Zum Beispiel:JSHint denkt, dass Jasmin-Funktionen nicht definiert sind

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. 

(Ich habe auch einige undefiniert Fehler für die Variablen und Funktionen aus der JS-Datei, die meine spec gegen testen soll, aber ich bin nicht sicher, warum das so ist und es kann ein separates sein Ausgabe.)

Meine Karma-Konfigurationsdatei hat frameworks: [ "jasmine" ] drin, ich habe keine Globals für JSHint gesetzt, und ich habe keine .jshintrc Datei, da ich es in Grunt konfiguriere. Ich habe versucht, Jasmins Funktionen als JSHint globals in meiner Gruntfile zu einem Zeitpunkt hinzuzufügen, aber sie als true oder false zu setzen, machte keinen Unterschied - die Fehler bestanden immer noch, wenn JSHint lief.

Was fehlt mir? Ich kann nichts tun, um JSHint dazu zu bringen, die Definition von Jasmins Funktionen in meiner Spezifikationsdatei zu überspringen.

+0

Welche Version von Karma verwenden Sie? –

+0

Karma 0.12.23, mit Karma-Jasmin 0.2.0. – Ian128K

Antwort

22

MINOR KORREKTUR - es sollte "" um predef in der .jshintrc Datei sein. "

durch das Hinzufügen von Fest der jshint Optionen in meinem 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", 
] 
+1

[die Antwort von Leon] (http://stackoverflow.com/a/27136840/3116322) sollte die akzeptierte Antwort sein, weil es viel kürzer ist, nur "Jasmin" zu definieren: true' – Ande

65

Sie können "jasmine": true auf Ihre .jshintrc Datei einfach hinzufügen.

+0

https://github.com/ sbt/sbt-jshint/Probleme/13 –

9

Ich reparierte diese in Gruntfile.js jasmine: true zu den Optionen der jshint Aufgabe hinzufügen:

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

Wie die OP, ich bin entweder eine .jshintrc Datei nicht verwenden.

0

Ich glaube, die anderen Antworten sind korrekt, aber ich habe noch nie zuvor eine solche Ausnahme gesehen, aber ich sehe es jetzt. Dann habe ich gemerkt, dass meine Tests nicht in IIFE sind. Also habe ich sie in IIFE so verschoben und ich bekomme solche JSHINT Warnungen nicht mehr.

(function() { 

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

})();