反应测试组件事件

时间:2018-12-20 17:53:44

标签: javascript reactjs testing mocha

我有以下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);

但是它也不起作用……即使它的逻​​辑看起来完全合理。对如何进行这项工作有任何想法吗?

0 个答案:

没有答案