如何循环以期望开玩笑中的项目列表
how to loop to expect a list of item in jest
我已经添加了下面的笑话单元测试来呈现一个组件,我希望它的一些元素使用“getAllByText”,因为有多个相似的元素。如果有超过 1 个元素,我会收到一条评论循环遍历元素列表,并希望它们中的每一个都可见。有人可以帮我修改测试以遍历所有元素吗?
it('should render seat total wrapper on small breakpoint', () => {
render(
<MockViewportProvider viewSize={ViewSizes.SMALL}>
<SeatMapContext.Provider value={{ state: contextObj, dispatch: noop }}>
<SeatMapCabinAndSeatWrapper
flightSeatMapPlaneData={seatMapPlanesData}
flightLegsDetails={FlightLegsDetails}
onChangeLegIndex={jest.fn}
selectedLegIndex={0}
handleLegendButtonClick={jest.fn()}
handleApplySeatSelection={handleApplySeatSelection}
/>
</SeatMapContext.Provider>
</MockViewportProvider>
);
expect(screen.getByRole('button', { name: 'Next Flight' })).toBeVisible();
expect(screen.getAllByText('6.24')[0]).toBeVisible();
});
查看评论 -> “如果预计会有超过 1 个项目,那么请遍历列表并期望每个元素都可见
如果应该只有 1 个项目,那么请确定如何使用 getByText。
衷心感谢您的快速帮助。
只需使用 for 循环。
for (const element of screen.getAllByText('6.24')) {
expect(element).toBeVisible();
}
对于没有 for..of
循环的实现:
const list = screen.getAllByText('6.24');
for (let i = 0; i < list.length; i++) {
expect(list[i]).toBeVisible();
}
或者:
screen.getAllByText('6.24').forEach((element) => {
expect(element).toBeVisible();
});
我已经添加了下面的笑话单元测试来呈现一个组件,我希望它的一些元素使用“getAllByText”,因为有多个相似的元素。如果有超过 1 个元素,我会收到一条评论循环遍历元素列表,并希望它们中的每一个都可见。有人可以帮我修改测试以遍历所有元素吗?
it('should render seat total wrapper on small breakpoint', () => {
render(
<MockViewportProvider viewSize={ViewSizes.SMALL}>
<SeatMapContext.Provider value={{ state: contextObj, dispatch: noop }}>
<SeatMapCabinAndSeatWrapper
flightSeatMapPlaneData={seatMapPlanesData}
flightLegsDetails={FlightLegsDetails}
onChangeLegIndex={jest.fn}
selectedLegIndex={0}
handleLegendButtonClick={jest.fn()}
handleApplySeatSelection={handleApplySeatSelection}
/>
</SeatMapContext.Provider>
</MockViewportProvider>
);
expect(screen.getByRole('button', { name: 'Next Flight' })).toBeVisible();
expect(screen.getAllByText('6.24')[0]).toBeVisible();
});
查看评论 -> “如果预计会有超过 1 个项目,那么请遍历列表并期望每个元素都可见 如果应该只有 1 个项目,那么请确定如何使用 getByText。
衷心感谢您的快速帮助。
只需使用 for 循环。
for (const element of screen.getAllByText('6.24')) {
expect(element).toBeVisible();
}
对于没有 for..of
循环的实现:
const list = screen.getAllByText('6.24');
for (let i = 0; i < list.length; i++) {
expect(list[i]).toBeVisible();
}
或者:
screen.getAllByText('6.24').forEach((element) => {
expect(element).toBeVisible();
});