Итак, у меня есть класс React, назовем его A. Я провожу тест на шутку, но продолжаю получать
Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
В классе React я делаю: export class A extends Component ..
В тестовом файле jest, который я делаю: import { A } from './A.js'
когда я бегу: const wrapper = mount(<A />)
Я получаю сообщение об ошибке выше. Я для шутки использую среду jsdom. Я не понимаю, почему это не сработает. Я читал, что некоторые люди экспортируют по умолчанию, но я не понимаю, почему импорт собственного имени не должен работать. Есть ли у кого-нибудь идеи, в чем может быть проблема?
реальный код: файл jest:
import Adapter from 'enzyme-adapter-react-16';
import Enzyme, { shallow, mount } from 'enzyme';
import React from 'react';
import { A } from '../A';
Enzyme.configure({ adapter: new Adapter() });
/**
* Test Suite
*/
describe('A test', () => {
it('calls componentDidMount', () => {
const wrapper = mount(<A />);
})
})
класс реакции:
import React, { Component } from 'react';
import PropTypes from 'prop-types';
export class A extends Component {
...
}
Конфигурация шутки:
module.exports = {
clearMocks: true,
// The directory where Jest should output its coverage files
coverageDirectory: 'coverage',
// The test environment that will be used for testing
testEnvironment: 'jsdom',
testURL: 'http://localhost/',
// Directory to search for tests
roots: ['src/'],
// The glob patterns Jest uses to detect test files
testMatch: [
'**/__tests__/**/*.[jt]s?(x)',
'**/?(*.)+(spec|test).[tj]s?(x)'
],
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
testPathIgnorePatterns: [
'/node_modules/'
],
snapshotSerializers: [
'enzyme-to-json/serializer'
]
};