You need to enable JavaScript to run this app. Enzyme.js中wrapper.find(selector)是否支持使用变量作为选择器?
优惠活动
大模型
产品
解决方案
定价
更多

Enzyme.js中wrapper.find(selector)是否支持使用变量作为选择器?

问题原因与修复方案

报错的核心原因是for...in循环会默认遍历对象原型链上的所有可枚举属性,并不局限于你手动定义在entryData上的.time、.key、.status三个自有属性。当循环拿到原型链上的其他属性值作为选择器时,自然找不到对应的DOM节点,就会触发「找到0个节点,无法调用text()方法」的报错。

Enzyme的find方法完全支持传入字符串类型的变量作为选择器,和硬编码字符串的使用效果完全一致,该问题属于JavaScript对象遍历的常见问题,和Enzyme本身无关。

修复方法1:添加自有属性校验

在循环内增加hasOwnProperty判断,过滤掉原型链继承的属性:

for (let entry in entryData) {
  if (entryData.hasOwnProperty(entry)) {
    expect(wrapper.find(entry).text()).to.be.equal(entryData[entry]);
  }
}

修复方法2:使用Object.entries遍历(更推荐)

直接用Object.entries获取对象自身的键值对,从根源上避免原型链干扰:

for (const [selector, expectedText] of Object.entries(entryData)) {
  expect(wrapper.find(selector).text()).to.be.equal(expectedText);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 17:54:03