J'ai un fichier de test Mocha qui ressemble à ceci:
var expect = require('chai').expect
var muting = require('../muting')
describe('muting', function () {
describe('init()', function () {
it('should inject an object into Twitter', function () {
var Twitter = 'Twitter'
muting.init(Twitter)
expect(muting.Twitter).to.equal(Twitter)
})
})
})
Lorsque j'exécute mocha
à partir de la CLI, il exécute le test avec succès.
Lorsque j'exécute standard
(l'exécutable de JavaScript Standard Style ) j'obtiens des erreurs sur les fonctions de framework de Mocha comme ceci:
standard: Use JavaScript Standard Style (https://github.com/feross/standard)
c:\..\test\index.js:5:0: 'describe' is not defined.
c:\..\test\index.js:6:2: 'describe' is not defined.
c:\..\test\index.js:7:4: 'it' is not defined.
Quelle est la façon la plus simple de faire en sorte que Standard ne se plaint pas de ces fonctions?
En fait, vous n'avez pas besoin de répertorier chaque variable globale unique dans votre package.json
Vous pouvez spécifier des environnements à la place comme ceci:
"standard": {
"env": [ "mocha" ]
}
Je préfère modifier mon .eslintrc
et ajoutez mocha à la section env:
...
"env": {
"commonjs": true,
"node": true,
"mocha": true
},
...
de cette façon mon package.json
le fichier est maintenu propre, le plugin vscode pour eslint le comprend mieux
alors que la configuration des commentaires d'eslint fonctionne très bien pour un seul fichier, je préfère utiliser la norme package.json
globals
configuration pour le faire pour mes projets. Par exemple.
{
"name": "my-package",
"version": "1.0.0",
"standard": {
"globals": [
"describe",
"context",
"before",
"beforeEach",
"after",
"afterEach",
"it",
"expect"
]
}
}
pour eslint, utilisez cette ligne au début de test_file.js
/* eslint-env mocha */
Vous pouvez utiliser la même solution que pour web workers
/* global describe it */
var expect = require('chai').expect
var muting = require('../muting')
describe('muting', function () {
describe('init()', function () {
it('should inject an object into Twitter', function () {
var Twitter = 'Twitter'
muting.init(Twitter)
expect(muting.Twitter).to.equal(Twitter)
})
})
})
Comme indiqué par Nick Tomlin il vous suffit de déclarer des globales.
Je l'utilise pour le mettre en ligne de commande, car j'ai différents globaux pour les tests comme pour les sources ou différentes parties du projet.
Pour les tests, nous devons utiliser
standard --global describe --global it test/
ailleurs dans mon projet, je veux lint code qui utilise jQuery donc j'utilise
standard --global $ src/client/
Si vous utilisez vim avec Syntastic, vous voudrez peut-être ajouter à votre . Vimrc
let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"