Cómo usar ESLint con Jest

Resuelto Retsam asked hace 9 años • 13 respuestas

Estoy intentando utilizar el linter ESLint con el marco de prueba Jest.

Las pruebas de Jest se ejecutan con algunos globales como jest, de los cuales tendré que informarle al linter; pero lo complicado es la estructura del directorio, con Jest las pruebas están integradas con el código fuente en __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 simplemente agregar un .eslintrcarchivo allí para agregar los globales... pero ciertamente no quiero agregar un .eslintrcarchivo a cada __test__directorio.

Por ahora, acabo de agregar los globales de prueba al .eslintrcarchivo global, pero como eso significa que ahora puedo hacer referencia jesten código que no es de prueba, no parece ser la solución "correcta".

¿Hay alguna manera de hacer que eslint aplique reglas basadas en algún patrón basado en el nombre del directorio, o algo así?

Retsam avatar Jul 26 '15 00:07 Retsam
Aceptado

Los documentos muestran que ahora puede agregar:

"env": {
    "jest/globals": true
}

A .eslintrcesto agregará todas las cosas relacionadas con bromas a su entorno, eliminando los errores/advertencias de linter.

Es posible que deba incluirlo plugins: ["jest"]en su configuración electrónica y agregar el eslint-plugin-jestcomplemento si aún no funciona.

Dave Cooper avatar Oct 26 '2016 14:10 Dave Cooper

ESLint admite esto a partir de la versión >= 4:

/*
.eslintrc.js
*/
const ERROR = 2;
const WARN = 1;

module.exports = {
  extends: "eslint:recommended",
  env: {
    es6: true
  },
  overrides: [
    {
      files: [
        "**/*.test.js"
      ],
      env: {
        jest: true // now **/*.test.js files' env has both es6 *and* jest
      },
      // Can't extend in overrides: https://github.com/eslint/eslint/issues/8813
      // "extends": ["plugin:jest/recommended"]
      plugins: ["jest"],
      rules: {
        "jest/no-disabled-tests": "warn",
        "jest/no-focused-tests": "error",
        "jest/no-identical-title": "error",
        "jest/prefer-to-have-length": "warn",
        "jest/valid-expect": "error"
      }
    }
  ],
};

Aquí hay una solución alternativa (de otra respuesta aquí, ¡vote a favor!) para la limitación de "extender en anulaciones" de la configuración de eslint:

overrides: [
  Object.assign(
    {
      files: [ '**/*.test.js' ],
      env: { jest: true },
      plugins: [ 'jest' ],
    },
    require('eslint-plugin-jest').configs.recommended
  )
]

Desde https://github.com/eslint/eslint/issues/8813#issuecomment-320448724

Zachary Ryan Smith avatar Mar 10 '2018 16:03 Zachary Ryan Smith

También puede configurar el entorno de prueba en su archivo de prueba de la siguiente manera:

/* eslint-env jest */

describe(() => {
  /* ... */
})
HaNdTriX avatar Sep 30 '2018 07:09 HaNdTriX

Para completar la respuesta de Zachary, aquí hay una solución alternativa para la limitación de "extender en anulaciones" de la configuración de eslint:

overrides: [
  Object.assign(
    {
      files: [ '**/*.test.js' ],
      env: { jest: true },
      plugins: [ 'jest' ],
    },
    require('eslint-plugin-jest').configs.recommended
  )
]

Desde https://github.com/eslint/eslint/issues/8813#issuecomment-320448724

Ricovitch avatar Apr 25 '2018 10:04 Ricovitch