You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Enzyme如何测试所有匹配选择器的checkbox均处于选中状态?

Enzyme批量校验checkbox选中状态解决方案

你不需要手动写循环实现校验,Enzyme本身提供了内置方法可以直接满足需求。

你写的all().props().checked写法无法生效,原因是all()返回的是匹配到的ReactWrapper实例数组,数组本身没有props()方法,必须单独调用每个实例的方法才能拿到对应属性。

推荐方案:使用Enzyme内置的everyWhere方法

everyWhere是Enzyme为节点集合提供的原生API,会校验所有匹配节点是否都满足回调函数中的判断条件,写法如下:

// 先拿到目标checkbox集合
const targetCheckboxes = wrapper.find('.my-element').at(1).find('input[type="checkbox"]');
// 校验所有checkbox的checked属性都为true
expect(targetCheckboxes.everyWhere(checkbox => checkbox.props().checked)).toBe(true);

该方法会自动遍历所有匹配到的节点,只要有一个节点不满足条件就会返回false,完全不需要手动指定索引或者写循环逻辑。如果需要校验是否至少有一个节点满足条件,也可以用同系列的someWhere方法实现。

替代方案:配合Jest匹配器实现

如果需要更灵活的校验逻辑,也可以先把所有选中状态提取成数组,再用Jest的数组匹配器校验:

const targetCheckboxes = wrapper.find('.my-element').at(1).find('input[type="checkbox"]');
const checkedStatusList = targetCheckboxes.map(item => item.props().checked);
// 校验所有值都是true
expect(checkedStatusList).toEqual(Array(targetCheckboxes.length).fill(true));

内容的提问来源于stack exchange,提问作者nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:45:04