Я делаю тесты для реактивного компонента, используя шутки и энзимы, и не выяснил, как проверить событие onClose из меню material-ui.То же самое относится и к другим компонентам, но мы можем придерживаться меню ради этого вопроса.Вот мой компонент:
import { Menu, MenuItem } from "@material-ui/core";
export class ItemPreviewerPage extends React.Component<ComponentProps, ComponentState> {
constructor(props) {
super(props);
this.state = {
anchorEl: undefined,
fieldsetMenu: undefined,
isColumnSelectorOpen: false,
};
}
render() {
const { classes } = this.props;
const moreMenuOpen = Boolean(this.state.anchorEl);
return (
<Menu className={classes.cardMenu}
id="long-menu"
anchorEl={this.state.anchorEl}
open={moreMenuOpen}
onClose={() => this.handleClose()}
PaperProps={{
style: {
maxHeight: 48 * 4.5,
width: 200
}
}}>
</Menu>
);
}
}
, и для теста я ожидал, что Меню закроется, если я установлю состояние anchorEl в true, а затем в false.
it("Calls the handleClose when the Menu is closed", () => {
const props = initialProps;
const wrapper = shallow(<ItemPreviewerPage {...props} />);
const spy = jest.spyOn(wrapper.instance(), "handleClose");
wrapper.setState({ anchorEl: true });
wrapper.instance().forceUpdate();
wrapper.setState({ anchorEl: false });
wrapper.instance().forceUpdate();
expect(spy).toBeCalled();
});
Что не так?Как я могу проверить onClose?