У меня есть компонент массива поля формы избыточного числа:
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
Почему этот тест не пройден, как я могу это исправить?