gpt4 book ai didi

reactjs - 尝试在 enzyme 中测试 FormControlLabel 在模拟时不会触发点击

转载 作者:行者123 更新时间:2023-12-04 02:47:14 24 4
gpt4 key购买 nike

我正在尝试从 Material UI 测试 FormControlLabel 组件。当我尝试模拟点击时,Enzyme 不会在我的组件上触发点击事件。

我尝试使用 shallow、createShallow、mount、createMount。

在调试中,我从 find 和 findWhere 查询中获取组件,从外观上看,它有一个包含所需复选框的控制 Prop 。

我还尝试用 shallow 和 mount 包裹检索到的 Prop 的复选框,但它没有用......

//parent.jsx
export public Parent = () => {
const [selected, setSelected] = useState(false);
const handleChange = (e,s) => {setSelected(s);};
...
return (
...
<FormControlLabel control={
<Checkbox onChange={handleChange}
checked={selected}}
label='some label'/>
...
);
}


//test.js
...
let component = createMount()(<Parent/>);

let checkbox = component.find(FormControlLabel)
.findWhere(c=>c.prop('label')==='some label').first();

checkbox.simulate('click');
checkbox.simulate('change');

//rest of the test
//the function handleChange is not called in debug.

预期:

  • 模拟点击或者改变应该调用onChange函数

实际:

  • 不会触发更改

代码有效,测试无效。

请帮忙!!!

最佳答案

试试这个

let checkbox = component.find(FormControlLabel);
checkbox.prop('control').props.onChange({ target: { checked: true }, persist: jest.fn() });

使用 shallow 为我工作。

关于reactjs - 尝试在 enzyme 中测试 FormControlLabel 在模拟时不会触发点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56823431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com