Как протестировать вложенные компоненты React с помощью Jest? - PullRequest
0 голосов
/ 29 марта 2020

Как тестировать вложенные компоненты React с помощью Jest?

BasicInfo. js

    import React, { Component } from 'react';
    import FormComponent from '@/components/FormComponent';
    import Styles from './Style.scss';
    import {basicInfoForm} from './BasicInfoForm'


    class BasicInfo extends Component {


            componentDidMount = ()=>{
                this.props.form.setFieldsValue({status:true})
                }

        render() {
            const menu = [
                {

                  title: 'Basic Info',
                  key:'general',
                  formWrapperId:'address-form-wrapper',
                  key:'define',

                },
                {
                  title: 'Normal Info',
                  key:'economy',
                  formWrapperId:'address-form-wrapper',
                  key:'undefine'

                }
              ];


              return (
                <div id="basic-info-container">
                  <p id="basic-info-desc"> {formatMessage({id:description[mode]})}</p>
                  {menu.map(formRow=>(
                    <div key={formRow.key}>
                      <div id={`${formRow.key}-info-subtitle`}>{formRow.title}</div>
                      <div id={formRow.formWrapperId}>
                        <FormComponent
                          formName={`${title}_form`}
                          form={form}
                          item={formRow.item}
                          formItems={formRow.formItems}
                          onChangeEventRef={formRow.onChangeInput}
                        />
                      </div>
                    </div>
                  ))}
                </div>
              );

        }







        }


    export default BasicInfo;

BasicInfo.test. js

import React from 'react';
import {shallow, mount} from 'enzyme';
import BasicInfo from './BasicInfoPage';
import FormComponent from '@/components/FormComponent';

describe('should checking Basic Info Page', () => {

    test('should check values', () => {
        const menu = [
            {
              title: 'Basic Info',
              key:'general',
              formWrapperId:'address-form-wrapper',
              key:'define'

            },
            {
              title: 'Normal Info',
              key:'economy',
              formWrapperId:'address-form-wrapper',
              key:'undefine'

            }
          ];

          const wrapper = shallow(<BasicInfo mock={menu} />);
          expect(tree).toMatchSnapshot()


    })


})

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

Я получаю ошибку ниже при выполнении теста npm

Проверка страницы ›Снимок оболочки RENDERER

TypeError: Cannot read property 'formItem' of undefined

  123 |       const translation = 'agencyForm.agencyDetails.basicDetails';
  124 |       const { title , form, mode, agencyDetailModel}  = this.props
> 125 |       const {formItem} = agencyDetailModel;
      |              ^
  126 |       const {description} = this.state
  127 |
  128 |       const BasicFormRows =[
at Object.<anonymous> (src/pages/AgencyManagement/Agencies/AgencyDetails/BasicInfo/BasicInfoPage.test.js:13:19)

    (node:18876) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of

asyn c функция без блока catch или отклонение обещания, которое не было обработано с помощью .catch (). Чтобы завершить процесс узла при отклонении необработанного обещания, используйте флаг CLI --unhandled-rejections=strict (см. https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (идентификатор отклонения: 1) (узел: 18876) [DEP0018] Предупреждение об устаревании: отклонения необработанного обещания устарели. В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом завершения.

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