在反应测试中错误测试功能组件

时间:2020-02-13 06:19:28

标签: javascript reactjs jestjs enzyme

我正在学习有关反应测试的信息,但是我有一些问题。 我正在尝试测试react中的功能组件

import React, {useState, useEffect, useContext} from 'react';
import DayPicker from 'react-day-picker/DayPickerInput';
import MomentLocaleUtils, {
  formatDate,
  parseDate,
} from 'react-day-picker/moment';
import 'react-day-picker/lib/style.css';
import 'moment/locale/pt-br';
import Swal from 'sweetalert2';
import $ from 'jquery';

import api from 'config/api';
import {InvestmentsContext} from 'context/InvestmentsContext';

export default props => {
  const [investments, setInvestments] = useContext(InvestmentsContext);
  const [investment, setInvestment] = useState({
    type: 'RENDA_FIXA',
    value: '',
    date: new Date(),
  });
  
  ...

  return (
    <>
      <form onSubmit={e => save(e, investment)} className="investment-form">
  ...
      </form>
    </>
  );
};

但是当我尝试用Jest和Enzyme测试它时,我得到了这个错误

TypeError: Invalid attempt to destructure non-iterable instance

      13 | import {InvestmentsContext} from 'context/InvestmentsContext';
      14 | 
    > 15 | export default props => {
         |                         ^

我的规格:

import React from 'react';

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

import Form from 'components/investment/Form';

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

let wrapper;

describe ('<Form />', () => {
  beforeEach (() => {
    wrapper = mount (<Form onCountChange={'a'} />);
  });

  it ('button should be disabled if investment value is empty', () => {
    expect (wrapper.find ('.btn-action')).toHaveAttribute ('disabled');
  });
});

我为什么要得到这个?由于我的组件是一个函数?

0 个答案:

没有答案