Estoy tratando de usar el linter ESLint con el marco de prueba de Jest.
Las pruebas de Jest se ejecutan con algunas variables globales jest
, de las cuales tendré que contarle al linter; pero lo complicado es la estructura del directorio, con Jest las pruebas están incrustadas con el código fuente en las __tests__
carpetas, por lo que la estructura del directorio se parece a:
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
Normalmente, tendría todas mis pruebas en un solo directorio, y podría agregar un .eslintrc
archivo allí para agregar los globales ... pero ciertamente no quiero agregar un .eslintrc
archivo a cada __test__
directorio.
Por ahora, acabo de agregar los globales de prueba al .eslintrc
archivo global , pero dado que eso significa que ahora podría hacer referencia jest
en un código que no sea de prueba, esa no parece ser la solución "correcta".
¿Hay alguna manera de obtener eslint para aplicar reglas basadas en algún patrón basado en el nombre del directorio, o algo así?
fuente
eslint-test
archivo con un globo, por ejemploeslint **/__tests__/*.js -c eslint-test.yml
. Dicho esto, no creo que haya mucho peligro de unajest
obeforeEach
mundial se filtre hacia el código de producción;)Respuestas:
Los documentos muestran que ahora puede agregar:
A
.eslintrc
lo que agregará todas las cosas relacionadas con bromas a su entorno, eliminando los errores / advertencias de linter.fuente
.eslintrc
archivo que extienda su valor predeterminado.eslintrc
en su__tests__
carpeta. Si tiene el mismo problema que OP (varias carpetas de prueba), puede generarlos.eslintrc
con una plantilla y un pequeño script bash (algo así comols **/__tests/ | xargs cp templates/.eslintrc
)ESLint admite esto a partir de la versión> = 4:
Aquí hay una solución alternativa (de otra respuesta aquí, ¡vote!) Para la limitación "extender en anulaciones" de la configuración de eslint:
Desde https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
fuente
"files"
y"env"
objeto a"overrides"
en laeslint.rc
que ya no tiene que preocuparse por la sintaxis específica broma que pasa pelusa fuera de los archivos de prueba.También puede configurar el entorno de prueba en su archivo de prueba de la siguiente manera:
fuente
Para completar la respuesta de Zachary, aquí hay una solución alternativa para la limitación "extender en anulaciones" de la configuración de eslint:
Desde https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
fuente
Las configuraciones basadas en patrones están programadas para la versión 2.0.0 de ESLint. Por ahora, sin embargo, tendrá que crear dos tareas separadas (como se menciona en los comentarios). Uno para pruebas y otro para el resto del código y ejecutar ambos, al tiempo que proporciona diferentes archivos .eslintrc.
PD: En la próxima versión de ESLint llegará un entorno de broma, registrará todos los globales necesarios.
fuente
Resolví el problema REF
correr
Y luego agrega tu
.eslintrc
archivofuente
Agregar entorno solo para
__tests__
carpetaPuede agregar un
.eslintrc.yml
archivo en sus__tests__
carpetas, que extiende su configuración básica:Si solo tiene una
__tests__
carpeta, esta solución es la mejor, ya que abarca el entorno jest solo donde se necesita.Tratar con muchas carpetas de prueba
Si tiene más carpetas de prueba (caso de OP), aún sugeriría agregar esos archivos. Y si tiene toneladas de esas carpetas, puede agregarlas con un simple script zsh:
Este script buscará
__tests__
carpetas y agregará un.eslintrc.yml
archivo con la configuración que se muestra arriba. Este script debe iniciarse dentro de la carpeta que contiene su padre.eslintrc
.fuente
algunas de las respuestas asumen que tiene instalado 'eslint-plugin-jest', sin embargo, sin necesidad de hacerlo, simplemente puede hacer esto en su
.eslintrc
archivo, agregue:fuente
En su archivo .eslintignore agregue el siguiente valor:
Esto debería ignorar todas las instancias del directorio __tests__ y sus hijos.
fuente