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.
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",
]
Vous pouvez simplement ajouter "jasmine": true
à ton .jshintrc
fichier.
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.
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);
});
});
})();