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.