web-dev-qa-db-fra.com

Jester enzyme peu profonde jeton inattendu <

J'essaie d'utiliser une enzyme pour tester les composants réactifs, mais je ne peux pas commencer même avec l'exemple le plus élémentaire.

import React from 'react'
import { shallow,render,mount,configure } from 'enzyme'
import Adapter from 'enzyme-adapter-react-16';
import {LoginPage} from '../../../app/components/login/LoginPage'

configure({ adapter: new Adapter() });

test('should say hello',() => {
    const loginPage = shallow(<LoginPage />)
    expect(loginPage.contains('Hello').toBe(true))
})

en l'exécutant, j'obtiens l'erreur suivante: -

Test suite failed to run

    D:/code/github/metallica2/metallica/client/src/app/__tests__/components/login/LoginPage.test.js: Unexpected token (9
:30)
         7 |
         8 | test('should say hello',() => {
      >  9 |     const loginPage = shallow(<LoginPage />)
           |                               ^
        10 |     expect(loginPage.contains('Hello').toBe(true))
        11 | })

Qu'est-ce que je fais mal ici?

Merci,

Amar

4
Amar Dev

J'ai pu résoudre ce problème en introduisant le ci-dessous dans le .babelrc

{
  "env": {
    "test": {
      "presets": ["env", "react", "stage-2"],
      "plugins": ["transform-export-extensions"],
      "only": [
        "./**/*.js",
        "node_modules/jest-runtime"
      ]
    }
  }
}

et installer les dépendances de développement suivantes: -

"babel-plugin-transform-export-extensions"
"enzyme-adapter-react-16"
"jest-cli"
"react-test-renderer"
5
Amar Dev

Jest ne comprend pas l'exportation JSX.

Vous pouvez résoudre ce problème en ajoutant les lignes suivantes au fichier .babelrc:

"env": {
    "test": {
      "presets": ["@babel/preset-env", "@babel/preset-react"],
      "plugins": ["transform-export-extensions"],
      "only": [
        "./**/*.js",
        "node_modules/jest-runtime"
      ]
    }
  },

Et puis installer babel-plugin-transform-export-extensions.

2
John Kennedy

Il semble que vous n'ayez pas de support jsx. Je vois que vous avez babel-jest installé mais avez-vous le fichier .babelrc dans le dossier racine

{
  "presets": ["es2015", "react"]
}
1
Krasimir