El estilo estándar de JavaScript no reconoce Mocha

91

Tengo un archivo de prueba de Mocha que se ve así:

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)
    })
  })
})

Cuando ejecuto mochadesde la CLI, ejecuta la prueba con éxito.

Cuando ejecuto standard(el ejecutable para JavaScript Standard Style ) obtengo errores en las funciones del marco de Mocha así:

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.

¿Cuál es la forma más limpia de hacer que Standard no se queje de estas funciones?

urig
fuente

Respuestas:

144

En realidad, no necesita enumerar todas las variables globales en su package.json

En su lugar, puede especificar entornos como este:

"standard": {
  "env": [ "mocha" ]
}

Fuente: Documentos oficiales de configuración de ESLint .

Krzysztof Kaczor
fuente
1
Buena solución. ¿No significa eso que puedo llamar ital código normal que no es de prueba y pasará el borrado? En otras palabras. ¿Se puede restringir solo a clases de prueba?
Ashley
3
Sí, ese es el problema ... la package.jsonconfiguración es 'global' para linter. Puede omitirlo proporcionando diferentes argumentos CLI para diferentes archivos: algo como standard --env mocha test/**/jspara las pruebas de pelusa (no probado), pero IRL nunca tuve la necesidad de modificar configuraciones como esta.
Krzysztof Kaczor
4
Si usa broma, también puede: "estándar": {"env": ["jest"]}
palafox_e
Para agregar al comentario de @palafox_e, puede averiguar qué valores están disponibles navegando a: github.com/sindresorhus/globals/blob/master/globals.json
Deyon Samuel Washington
¡Estoy usando jestpero no sé por qué solo funciona para moka y no para broma!
Developerium
147

Prefiero editar mi .eslintrcy agregar mocha a la sección env:

...
"env": {
  "commonjs": true,
  "node": true,
  "mocha": true
},
...

de esta manera mi package.jsonarchivo se mantiene limpio, también el complemento vscode para eslint lo entiende mejor

Developerium
fuente
6
Sí, esta debería ser la respuesta aprobada.
Raymond Wachaga
4
También apoyo el hecho de que esta debería ser la respuesta aprobada.
Ezrqn Kemboi
61

Aunque la configuración de comentarios de eslint funciona muy bien para un solo archivo, prefiero usar la configuración estándar para hacer esto en mis proyectos. P.ejpackage.json globals

{
  "name": "my-package",
  "version": "1.0.0",
  "standard": {
    "globals": [
      "describe",
      "context",
      "before",
      "beforeEach",
      "after",
      "afterEach",
      "it",
      "expect"
    ]
  }
}
Nick Tomlin
fuente
50

para eslint use esta línea al comienzo de test_file.js

/* eslint-env mocha */
Ryu_hayabusa
fuente
1
¡Prefiero esta solución!
Michael Ozeryansky
6
Esa no es una solución si tiene que agregarla para cada archivo de prueba
Peadar
38

Puede utilizar la misma solución que para los trabajadores web

/* 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)
    })
  })
})
Niklas Ingholt
fuente
2

Como lo señaló Nick Tomlin , solo necesita declarar globales.

Yo suelo ponerlo en la línea de comandos, ya que tengo diferentes globales para pruebas como para fuentes o diferentes partes del proyecto.

Para las pruebas debemos usar

standard --global describe --global it test/

en otra parte de mi proyecto quiero lint código que usa jQuery así que uso

standard --global $ src/client/

Consejo de bonificación

Si está utilizando vim con Syntastic, tal vez desee agregar a su .vimrc

let b:syntastic_checkers = ['standard']
let g:syntastic_javascript_standard_args = "--global $ --global it --global describe"
Gianluca Casati
fuente