【发布时间】:2019-03-15 20:46:26
【问题描述】:
我在我的父组件中有一个愉快的测试路径,它将呈现一个组件或 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()}
/>
);
});
});
【问题讨论】:
-
你能用你正在使用的任何其他与 jest 相关的包的信息更新问题吗?我在 React 中使用过 Jest,但我不熟悉
getByText或toBeInTheDocument。
标签: reactjs typescript jestjs