如何模拟 Jest/酶测试中的下拉菜单选择?

2024-03-31

我正在尝试为我的 React 组件编写笑话测试,该组件具有如下所示的下拉列表:

<select id="dropdown" onChange={this.handlechange} ref={this.refDropdown}>
    {this.props.items.map(item => {
        return (
            <option key={item.id} value={item.id}>
                {item.name}
            </option>
        );
    })}
</select>

处理程序如下所示:

handlechange = () => {
    const sel = this.refDropdown.current;
    const value = sel.options[sel.selectedIndex].value;
    //...
}

我想模拟用户选择列表中的第二个条目(或第一个条目以外的任何条目),但遇到了麻烦。如果我模拟“更改”事件,它确实会触发对handlechange() but selectedIndex始终设置为零。

我在玩笑测试中尝试了这段代码,但它不会导致selectedIndex可在处理程序中访问。

const component = mount(<MyComponent/>);
component.find("#dropdown").simulate("change", {
    target: { value: "item1", selectedIndex: 1 }
});

发生的情况是almost正确的。如果我查看传入的事件,我可以看到e.value正如我所设置的那样,设置为“item1”,但它的行为并不像实际做出的选择。

我还尝试过直接将“点击”模拟发送到选项元素,但这没有任何作用。

模拟下拉列表中的选择的正确方法是什么?


尝试这个方法:

      wrapper.find('option').at(0).instance().selected = false;
      wrapper.find('option').at(1).instance().selected = true;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何模拟 Jest/酶测试中的下拉菜单选择? 的相关文章

随机推荐