Реакция теста приведения формы - PullRequest
0 голосов
/ 30 мая 2018

У меня есть компонент массива поля формы избыточного числа:

export const UttakPeriod = ({
  fields,
  updatePeriode,
  editPeriode,
  cancelEditPeriode,
  isAnyFormOpen,
  isNyPeriodeFormOpen,
  readOnly,
  periods,
  ...other
}) => (
  <div>
    {fields.map((fieldId, index, field) => {
      const period = field.get(index);

      return (
        <div key={fieldId}>
          {other.meta.error && index === 0 ? <AlertStripe type="warning">{other.meta.error}</AlertStripe> : null}
          <Row>
            <Column>
                <UttakPeriodType
                  toDate={period.tom}
                  fromDate={period.fom}
                  openForm={periode.openForm}
                  id={period.id}
                  editPeriode={editPeriode}
                  isAnyFormOpen={isAnyFormOpen}
                  isNyPeriodeFormOpen={isNyPeriodeFormOpen}
                  readOnly={readOnly}
                />
                <UttakPeriodContent
                  fieldId={fieldId}
                  openForm={period.openForm}
                  id={period.id}
                  updatePeriode={updatePeriode}
                  cancelEditPeriode={cancelEditPeriode}
                  readOnly={readOnly}
                  toDate={period.tom}
                  fromDate={period.fom}
                />
            </Column>
          </Row>
        </div>
      );
    })}
  </div>
);

Я пытаюсь проверить этот компонент и проверить, правильно ли он отображается.Я использую getMockedFields для макетирования полей для этого fieldArray компонента.Это тест:

const getMockedFields = (fieldNames, periods) => {
  const field = {
    get: idx => periods[idx],
  };
  return {
    map: callback => fieldNames.map((fieldname, idx) => callback(fieldname, idx, field)),
  };
};

const fieldNames = ['periods[0]', 'periods[1]'];
const periods = [{
  fom: '2017-10-01',
  id: '2017-10-01 | 2017-10-10',
  openForm: false,
  tom: '2017-10-10',
  updated: false,
}, {
  fom: '2018-10-01',
  id: '2018-10-01 | 2018-10-10',
  openForm: true,
  tom: '2018-10-10',
  updated: false,
}];

const updatePeriode = sinon.spy();
const editPeriode = sinon.spy();
const cancelEditPeriode = sinon.spy();
const isAnyFormOpen = sinon.spy();

describe('<UttakPeriod>', () => {
  it('should render UttakPeriod', () => {
    const wrapper = shallowWithIntl(<UttakPeriod
      fields={getMockedFields(fieldNames, periods)}
      updatePeriode={updatePeriode}
      editPeriode={editPeriode}
      cancelEditPeriode={cancelEditPeriode}
      isAnyFormOpen={isAnyFormOpen}
      periods={periods}
      meta={meta}
      readOnly
    />);

    const uttakPeriodType = wrapper.find('UttakPeriodType');
    expect(uttakPeriodType).to.have.length(2);
    const uttakPeriodContent= wrapper.find('UttakPeriodContent');
    expect(uttakPeriodContent).to.have.length(2);
  });

Но я получаю ошибку для этого теста:

AssertionError: ожидается, что {length: 0} будет иметь длину 2, но получил 0

Почему этот тест не пройден, как я могу это исправить?

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