web-dev-qa-db-fra.com

JSHint pense que les fonctions Jasmine ne sont pas définies

J'ai une configuration Grunt qui utilise Karma + Jasmine et JSHint. Chaque fois que j'exécute JSHint sur mon fichier de spécifications, j'obtiens une série d'erreurs "non définies", dont la plupart concernent les fonctions intégrées de Jasmine. Par exemple:

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.

(Je reçois également des erreurs non définies pour les variables et les fonctions du fichier JS que mes spécifications sont censées tester, mais je ne sais pas pourquoi cela est et cela peut être un problème distinct.)

Mon fichier de configuration Karma a frameworks: [ "jasmine" ] dedans, je n'ai pas de globaux définis pour JSHint, et je n'ai pas de .jshintrc fichier depuis que je le configure dans Grunt. J'ai essayé d'ajouter les fonctions de Jasmine en tant que globaux JSHint dans mon Gruntfile à un moment donné, mais les définir sur true ou false n'a pas fait de différence - les erreurs persistaient quand JSHint s'exécutait.

Qu'est-ce que je rate? Je n'arrive pas à faire quoi que ce soit pour que JSHint saute la vérification de la définition des fonctions de Jasmine dans mon fichier de spécifications.

29
Ian128K

CORRECTION MINEURE - il devrait y avoir "" autour du préfixe dans le fichier .jshintrc.

Corrigé en l'ajoutant aux options jshint dans mon 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",
]
22
Ian128K

Vous pouvez simplement ajouter "jasmine": true à ton .jshintrc fichier.

68
Leon Fedotov

J'ai corrigé cela dans Gruntfile.js en ajoutant jasmine: true aux options de la tâche jshint:

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

Comme l'OP, je n'utilise pas non plus de fichier .jshintrc.

10
GOTO 0

Je crois que les autres réponses sont correctes, mais je n'ai jamais vu une telle exception auparavant, mais je la vois maintenant. Ensuite, j'ai remarqué que mes tests ne sont pas en IIFE. Je les ai donc déplacés dans IIFE comme ceci et je ne reçois plus de tels avertissements JSHINT.

(function () {

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

})();
0
Petur Subev