Una buena forma de deshacerse del error de reenvío de expresiones sin usar con chai
eslint (5)
Acabo de encontrar otra opción usando los patrones de Globos Relativos :
En su archivo .eslintrc
:
overrides: [
{
files: "*.test.js",
rules: {
"no-unused-expressions": "off"
}
}
]
En mis pruebas de Chai a menudo me encuentro queriendo usar sus aserciones que son algo así como .to.be.empty
, .to.be.true
, etc., porque me parece que están más limpias para leer que .to.be.length(1)
o .to.be.equal(true)
. Sin embargo, esto rompe mi indicador (estoy usando la configuración por defecto de Airbnb).
Podría usar la sintaxis de // disable-eslint-line
, pero luego tendría que agregarla a cada línea que se lea así y que parezca tediosa.
También he leído sobre la biblioteca de DirtyChai , pero eso requeriría que DirtyChai toda mi biblioteca de pruebas agregando corchetes a todos, lo que parece algo que no debería hacer simplemente para que mi interlocutor pase algo que probablemente debería estar bien con en primer lugar.
¿Alguien sabe una forma mejor de manejar esto que las formas que he descrito anteriormente?
Combinar la respuesta de jonalvarezz con la respuesta de Ihor Diachenko me dio exactamente lo que quería:
npm install --save-dev eslint-plugin-chai-friendly
// .eslintrc.js
module.exports = {
// ...
plugins: [''chai-friendly''],
overrides: [{
files: ''*.test.js'',
rules: {
''no-unused-expressions'': ''off'',
''chai-friendly/no-unused-expressions'': ''off'',
},
}],
// ...
}
De esta manera, la regla de no-unused-expression
solo se *.test.js
archivos *.test.js
Y una regla de no-unused-expression
seguirá vigente para detectar cualquier expresión no utilizada en los archivos de prueba que no estén relacionados con chai
.
En caso de que alguien haya encontrado esto hoy, tuve el mismo problema y encontré esta solución en la documentación de eslint . En su archivo de configuración eslint, puede especificar uno o varios entornos, que predefinirán las variables globales para este entorno. Para nosotros, sería mocha
, y lo configurarías así en tu .eslintrc.json
:
{
"env": {
"mocha": true
},
...
...
...
}
Como resultado, eliminará todos los falsos positivos sobre mocha, it
describe
, it
beforeEach
, etc. sin necesidad de deshabilitar completamente el eslint o deshabilitar completamente cualquier regla específica.
Probado con ESLint v.4.11 y mocha 5.0
Hay un par de soluciones / enfoques que puede tomar. Puede simplemente deshabilitar la regla para todo el archivo usando eslint-disable
en la parte superior del archivo en cuestión:
/* eslint-disable no-unused-expressions */
expect(someTrueValue).to.be.true;
Sin embargo, agregar esto en la parte superior de cada archivo de prueba también puede ser tedioso. Otra opción es deshabilitar esta regla para todos los archivos en una carpeta específica (esto también le permite deshabilitar otras reglas que normalmente están deshabilitadas pero que pueden resultar problemáticas en las pruebas, como el uso de la opción de no-underscore-dangle
cuando se usa rewire
).
Puede hacerlo colocando un archivo de configuración .eslintc
en el mismo directorio que sus archivos de prueba, configurado para deshabilitar esa regla. Esto le permite usar la configuración predeterminada para todas las demás reglas mientras ignora esa regla específicamente solo en los archivos de esa carpeta. ESLint llama a esta Configuration Cascading
.
He creado un pequeño plugin llamado eslint-plugin-chai-friendly
que anula la regla predeterminada no-unused-expressions
y lo hace amigable con chai. La regla modificada ignora las declaraciones de expect
y de obligación mientras mantiene el comportamiento predeterminado para todo lo demás.