我有以下React组件(.jsx)
@observable isVisible = true;
handleVisibility() {
this.isVisible = !this.isVisible;
}
render() {
return <div
...
onMouseEnter={event => this.handleVisibility(event)}
onMouseLeave={event => this.handleVisibility(event)}
</div>;
}
ComponentListElement.propTypes = {
componentName: PropTypes.string.isRequired,
id: PropTypes.string.isRequired,
};
ComponentListElement.wrappedComponent.propTypes = {
schema: PropTypes.object.isRequired,
};
我正在尝试创建一个测试,以查看是否正在调用onMouseEnter和onMouseLeave事件处理程序。 我已经尝试了十几种方法,但是没有任何效果。我在网上发现最常用的方法是:
// Init
const handleVisibility = sinon.spy();
// Action
const wrapper = mount(<Provider schema={mockSchema}>
<ComponentListElement
componentName="ComponentName1"
id="1"
onMouseLeave={handleVisibility}/>
</Provider>);
wrapper.find("div.my-element").at(0).simulate("mouseLeave");
// Test
expect(handleVisibility.callCount).to.be.equal(1);
但是它也不起作用……即使它的逻辑看起来完全合理。对如何进行这项工作有任何想法吗?