Enzyme Shallow не отображает компонент, и на выходе получается <Route render = {[Function: render]} />

У меня есть компонент FileDrop, затем я использую фермент, чтобы проверить, что он не отображает компонент правильно, и результат

<Route render = {[Function: render]} />

Ниже приведен мой компонент:

import React from "react";
import Dropzone from "react-dropzone";
import { withRouter } from "react-router-dom";
import { connect } from "react-redux";
import { dropFiles} from "../../actions/fileActions";

class FileDrop extends React.Component {
  constructor(props) {
    super(props);
    this.onDrop = this.onDrop.bind(this);
  }

  onDrop(accepted, rejected) {
    this.props.dispatch(dropFiles(accepted));
  }

  getInnerContent(filename) {
    return (
      <span className = "filename-text">
        <i className = "fa fa-3x fa-files-o" /> {filename ? filename : "Click or drag and drop a CSV file here to upload."}
      </span>
    );
  }

  render() {
    return (
      <Dropzone multiple = {false} onDrop = {this.onDrop} className = "drop" activeClassName = "active-drop" rejectClassName = "reject-drop" accept = ".csv">
        <div className = "drop-inner">{this.getInnerContent(this.props.droppedFiles.length != 0 ? this.props.droppedFiles[0].name : null)}</div>
      </Dropzone>
    );
  }
}

const mapStateToProps = (state, ownProps) => {
  return {
    droppedFiles: state.files.droppedFiles
  };
};

export default withRouter(connect(mapStateToProps)(FileDrop));

И вот мой FileDropSpec.js

import React from 'react';
import { expect } from 'chai';
import { shallow } from 'enzyme';
import FileDrop from '../../../public/scripts/components/fileupload/FileDrop';

describe('<FileDrop/>', function() {
  it('should have an input to upload files', function () {
    const wrapper = shallow(<FileDrop/>);
    console.info(wrapper.debug());
    expect(wrapper.find('input')).to.have.length(1);
  });
})
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
549
1

Ответы 1

Это правильно, мелкий рендеринг только первого уровня вашего дерева компонентов. И в вашем случае это withRouter Hoc, для тестирования компонентов используйте mount или компонент перетаскивания файла экспорта напрямую.

export class FileDrop extends React.Component {

и используйте его вместо экспорта по умолчанию для теста с мелким. http://airbnb.io/enzyme/docs/api/ReactWrapper/mount.html

Другие вопросы по теме