У меня есть удачный путь тестирования в моем родительском компоненте, и он отобразит компонент или тег p. Я заблудился о том, как проверить, отображается ли этот дочерний компонент. Вот мой родительский компонент.
if (startDate && endDate && startDate <= endDate) {
return (
<div className={styles.root}>
<DateRangeInput {...this.props} />
<DateRangePicker
startDate={moment(startDate)}
endDate={moment(endDate)}
onChange={this.onDatePickerChange}
mode={DateRangePicker.MODE_RANGE}
/>
</div>
);
}
return (
<div className={styles.root}>
<DateRangeInput {...this.props} />
<p>Cannot have start date after end date</p>
</div>
);
Вот мои тесты. Я не уверен, правильно ли я поступаю по этому поводу или как лучше всего проверять оператор if
describe('<DateRangeInputPicker />', () => {
it('should show null messaging when endDate < startDate', () => {
const { getByText } = render(
<DateRangeInputPicker
startDate={new Date(2018, 0, 14)}
endDate={new Date(2017, 1, 29)}
onChange={jest.fn()}
/>
);
expect( getByText('Cannot have start date after end date')).toBeInTheDocument();
});
it('should render DateRangePicker when endDate > startDate', () => {
const { getByText } = render(
<DateRangeInputPicker
startDate={new Date(2018, 0, 14)}
endDate={new Date(2017, 1, 29)}
onChange={jest.fn()}
/>
);
});
});