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?

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 .


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


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

50

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

/* eslint-env mocha */

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

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"
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.