web-dev-qa-db-fra.com

enzyme: TypeError: l'adaptateur n'est pas un constructeur

Salut, j'essayais de tester l'application React avec une enzyme, mais cela génère une erreur TypeError: l'adaptateur n'est pas un constructeur, Any Idea

Ceci est mon fichier de test

import ProductRow from '../product_row';
import React from 'react';
// import { mount } from 'enzyme';
import * as enzyme from 'enzyme';
import * as Adapter from 'enzyme-adapter-react-16';
enzyme.configure({ adapter: new Adapter() });

test('TodoComponent renders the text inside it', () => {
  const wrapper = enzyme.mount(
    <ProductRow  item={{}} quickView={[]}
      productPage={''}
      count={0}
      numberOfColumns={0}
      title={'title'}
      taxonomies={{}}
      excerpt={'excerpt'}
    />
  );
});

TypeError: l'adaptateur n'est pas un constructeur

12
Gopinath Kaliappan

Je ne pense pas import * fonctionne comme prévu lors de l'importation d'un module avec une exportation par défaut, cela devrait fonctionner:

import Enzyme from 'enzyme'
import Adapter from 'enzyme-adapter-react-16'

Enzyme.configure({ adapter: new Adapter() })

BTW. vous pouvez mettre ce qui précède dans un fichier et le référencer dans vos paramètres Jest afin de ne pas avoir à l'ajouter à chaque test:

setupFiles: ['<rootDir>/tools/jest/setup-react-adapter.js'],
33
Andreas Köberle

Vous devez utiliser l'importation comme ceci:

import Adapter from 'enzyme-adapter-react-16';

De cette façon: (importer * comme adaptateur à partir de ...) renvoie un message "TypeError: l'adaptateur n'est pas un constructeur."

4
Filipe Natanael

Pour TypeScript:

import { configure } from 'enzyme';
import * as ReactSixteenAdapter from 'enzyme-adapter-react-16';
const adapter = ReactSixteenAdapter as any;
configure({ adapter: new adapter.default() });
4
user3540397