Вы можете использовать fireEvent
, а затем использовать .checked
с фильтром следующим образом:
it("should click on text", () => {
const handleChange = jest.fn();
const { container } = render(<Radiogroup onClick={handleChange} />);
const dialogContainer = getAllByRole(container, "radio");
const checkedItemsBeforeClick = dialogContainer.filter(el=>el.checked)
expect(checkedItems.length).toEqual(0)
fireEvent.click(dialogContainer[0]);
const checkedItemsAfterClick = dialogContainer.filter(el=>el.checked)
expect(checkedItems.length).toEqual(1)
});
Обновление:
Поскольку вы не используете элементы input
, вам нужно сделать что-то вроде этого:
const RadioButtonGroup ()=>{
const [selectedId, setSelectedId] = useState('select_1')
const handleChange = (ev)=>{
setSelectedId(ev.target.id)
}
return (
<React.Fragment>
<Radiobutton id="select_1 onClick={handleChange} isChecked={selectedId==="select_1"} label="Dummy Radio1" />
<Radiobutton
onClick={handleChange}
isChecked={selectedId==="select_2"}
label="Dummy Radio2"
/>
<Radiobutton
onClick={handleChange}
isChecked={false}
label="Dummy Radio3"
isChecked={selectedId==="select_2"}
/>
</React.Fragment>
)
};
И убедитесь, что вы передаете опору id в свой Radiobutton
. Надеюсь, это поможет.