2014-09-29 15 views
29

Ho un setup Grunt che usa Karma + Jasmine e JSHint. Ogni volta che eseguo JSHint sul mio file spec, ottengo una serie di errori "non definiti", la maggior parte dei quali sono per le funzioni incorporate di Jasmine. Per esempio:JSHint pensa che le funzioni del gelsomino non siano definite

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. 

(Ho anche alcuni errori non definiti per le variabili e le funzioni dal file JS che la mia spec ha lo scopo di testare contro, ma non sono sicuro perché questo è e può essere un separato problema.)

Il file di configurazione Karma contiene frameworks: [ "jasmine" ], non ho alcun set globale impostato per JSHint e non ho un file .jshintrc da quando lo sto configurando in Grunt. Ho provato ad aggiungere le funzioni di Jasmine come globals JSHint nel mio Gruntfile a un certo punto, ma impostarle come true o false non ha fatto la differenza, gli errori persistevano ancora quando JSHint era in esecuzione.

Cosa mi manca? Non riesco a fare nulla per convincere JSHint a saltare il controllo della definizione delle funzioni di Jasmine nel mio file spec.

+0

Quale versione di Karma usi? –

+0

karma 0.12.23, con karma-gelsomino 0.2.0. – Ian128K

risposta

22

CORREZIONE MINORE - dovrebbe esserci "" attorno a predef nel file .jshintrc.

fisso aggiungendo questo ai jshint opzioni nel mio 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

[la risposta di Leon] (http://stackoverflow.com/a/27136840/3116322) dovrebbe essere la risposta accettata perché è molto più breve definire semplicemente "" gelsomino ": true' – Ande

65

Si può solo aggiungere "jasmine": true al file .jshintrc.

+0

https://github.com/ SBT/SBT-jshint/temi/13 –

9

Ho fissato questo in Gruntfile.js aggiungendo jasmine: true alle opzioni del compito jshint:

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

come il PO, non sto usando un file .jshintrc sia.

0

Credo che le altre risposte siano corrette, ma non ho mai visto una tale eccezione prima, comunque la vedo ora. Poi ho notato che i miei test non sono in IIFE. Così li ho spostati in IIFE in questo modo e non ricevo più tali avvisi JSHINT.

(function() { 

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

})(); 
Problemi correlati