45 votes

Où le fichier d'installation de l'enzyme doit-il être écrit?

Hier j'ai mis à jour mon Réagir projet de v16.0, mais j'ai trouvé que l'Enzyme a eu quelques problèmes

    Error: 
      Enzyme Internal Error: Enzyme expects an adapter to be configured, but found none. To
      configure an adapter, you should call `Enzyme.configure({ adapter: new Adapter() })`
      before using any of Enzyme's top level APIs, where `Adapter` is the adapter
      corresponding to the library currently being tested. For example:
      import Adapter from 'enzyme-adapter-react-15';
      To find out more about this, see http://airbnb.io/enzyme/docs/installation/index.html

    at validateAdapter (spec/components/page_components/SongListItem/index.spec.js:9:1141986)
    at getAdapter (spec/components/page_components/SongListItem/index.spec.js:9:323041)
    at new ReactWrapper (spec/components/page_components/SongListItem/index.spec.js:9:622193)
    at mount (spec/components/page_components/SongListItem/index.spec.js:9:2025476)
    at UserContext.<anonymous> (spec/components/page_components/SongListItem/index.spec.js:9:1235741)

Et j'ai trouvé une solution sur le site web

// setup file
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

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

Mais j'ai un problème: Où l'enzyme fichier d'installation de l'être écrite? En face de chaque fichier de test?

J'ai essayé d'ajouter le code ci-dessus à un des fichiers de test, Mais il y a encore un problème

 Internal error: attempt to prepend statements in disallowed (non-array) context at C:/Users/killer/workspace/react/NetEase-Cloud-Music-Web/spec/components/page_components/SongListItem/index.spec.js

C' est l'adresse de mon projet

62voto

bradywatkinson Points 495

J'ai eu un problème similaire

Si vous utilisez plaisanterie à l'exécution de vos tests, vous pouvez créer un test-setup.js le fichier et ajouter l'extrait de l'enzyme docs:

// test-setup.js
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

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

puis ajouter un setupTestFrameworkScriptFile - clés dans votre plaisanterie de configuration et de pointer vers ce fichier. Par exemple, si votre plaisanterie de configuration est en package.json:

// package.json
{
    ...,
    "jest": {
        "setupTestFrameworkScriptFile": "<rootDir>/test-setup.js"
    }
}

à partir de la plaisanterie docs https://facebook.github.io/jest/docs/en/configuration.html#setuptestframeworkscriptfile-string:

Le chemin d'accès à un module qui fonctionne un peu de code pour configurer ou paramétrer le cadre de tests avant chaque test. Depuis setupFiles s'exécute avant le framework de test est installé dans l'environnement, ce fichier de script vous présente l'occasion de l'exécution du code immédiatement après le framework de test a été installé dans l'environnement.

Ceci exécutera après votre plaisanterie environnement est initialisé, mais avant que votre enzyme exécution des tests

Pour les personnes à l'aide de create-réagir-app
Vous devez exécuter yarn eject ou npm run eject, puis vous verrez la plaisanterie de configuration dans votre package.json.
En outre, setupTestFrameworkScriptFile est actuellement dépréciée en faveur de l' setupFilesAfterEnv.

23voto

VinceOPS Points 1242

Pour les personnes utilisant créez-réagir-app, le chemin d'accès de votre fichier de configuration est src/setupTests.js. Voir la documentation (lisez-moi) sur GitHub:

Initialisation De L'Environnement De Test

Remarque: cette fonction est disponible avec react-scripts@0.4.0 et de plus élevé. Si votre application utilise un navigateur API que vous avez besoin de fantaisie dans vos tests ou si vous avez juste besoin d'un programme mondial d'installation avant de lancer vos tests, ajouter un src/setupTests.js pour votre projet. Il sera exécuté automatiquement avant l'exécution de vos tests.

(Créer-réagir l'application ne gère pas, au moins dans v1.4.1, l'option setupTestFrameworkScriptFile dans le paquet.json).

7voto

Mise à jour juin 2019

Celui qui à l'aide de l'ARC(créer-réagir-app), src/setupTests.js ne marchera pas! Créer jest.config.js le fichier dans le dossier racine du projet et coller le contenu ci-dessous,

module.exports = {
    "moduleNameMapper": {
      "\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/__mocks__/fileMock.js",
      "\\.(scss|sass|css)$": "identity-obj-proxy"
    },
    "setupFilesAfterEnv": ["<rootDir>/src/setupTests.js"]
}

ModuleNameMapper permettra d'éviter les fichiers statiques déclarations d'importation (en option).

Depuis setupTestFrameworkScriptFile a été abandonné, donc, il faut utiliser setupFilesAfterEnv de la valeur de propriété en tant que tableau.

Vous assurer que vous avez setupTests.js le fichier se trouve dans votre projet de dossier src ou spécifier votre setupTests.js l'emplacement du fichier dans votre projet.

Plus D'Infos

setupTests.js le fichier doit avoir contenu ci-dessous,

import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

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

Cette configuration fonctionne pour réagir 16

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X