web-dev-qa-db-fra.com

Le style standard JavaScript ne reconnaît pas Mocha

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?

61
urig

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" ]
}

Source: documents officiels de configuration ESLint .

109
Krzysztof Kaczor

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

79
Developerium

alors que la configuration des commentaires d'eslint fonctionne très bien pour un seul fichier, je préfère utiliser la norme package.jsonglobals 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"
    ]
  }
}
57
Nick Tomlin

pour eslint, utilisez cette ligne au début de test_file.js

/* eslint-env mocha */
40
Ryu_hayabusa

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)
    })
  })
})
38
Niklas Ingholt

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/

Astuce bonus

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"
3
Gianluca Casati