Реакция / фермент: ошибка инвариантного нарушения при запуске теста Jest / Enzyme - PullRequest
0 голосов
/ 31 августа 2018

У меня возникли проблемы с тестами, написанными в Jest / Enzyme. У меня есть компонент React / Redux, и я пытаюсь написать базовый тест, но получаю следующую ошибку:

Invariant Violation: ReactShallowRenderer render(): Shallow rendering works only with custom components, but the provided element type was 'undefined'.

Это мой код:

dashboardComponent.js

import '../stylesheets/dashboardComponent.css';
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import * as dashboardActions from '../actions/dashboardActions';

class DashboardComponent extends Component {
  constructor(props) {
    super();
  }

  componentDidMount() {
    this.props.actions.getDashboardContent();
  }

  render() {
    return (
      < SOME JSX HERE >
    );
  }
}

function mapStateToProps(state) {
  return {
    dashboardContent: state.dashboard.get('dashboardContent')
  }
}

function mapDispatchToProps(dispatch) {
  return {
    actions: bindActionCreators(dashboardActions, dispatch)
  };
}

export default connect(mapStateToProps, mapDispatchToProps)(DashboardComponent);

dashboardComponent.test.js

import React from 'react';
import { shallow } from 'enzyme';
import { DashboardComponent as Dashboard } from '../../components/dashboardComponent';

const wrapper = shallow(<Dashboard />);

describe('Dashboard', () => {
  it('renders the Dashboard component', () => {
    expect(wrapper).toMatchSnapshot();
  });
});

Я не уверен, почему <Dashboard /> здесь не определено.

1 Ответ

0 голосов
/ 31 августа 2018

В настоящее время вы экспортируете упакованный компонент в качестве экспорта по умолчанию, но для использования развернутого компонента в своих тестах вам также необходимо экспортировать его как именованный экспорт, т.е.

export class DashboardComponent extends Component { ... }

export default connect(...)(DashboardComponent)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...