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

Jest与Enzyme测试TileGrid组件失败求助:断言.tile-grid__container存在却不通过

排查TileGrid组件测试断言失败的问题

从你提供的调试信息和代码来看,明明渲染结果里存在.tile-grid__container元素,但断言却失败,大概率是以下几个常见问题导致的,咱们一个个排查:

1. 断言方法名写错了(最可能的原因)

Jest的内置匹配器里没有toHaveLengthOf这个方法,正确的方法是toHaveLength!这是很容易犯的笔误,直接导致断言不通过,和元素是否存在无关。

把你的断言代码改成下面这样试试:

expect(wrapper.find('.tile-grid__container')).toHaveLength(1);

2. 浅渲染的局限性(可能性较低)

虽然你的debug输出显示了目标元素,但如果.tile-grid__container是由TileGrid内部的子组件渲染出来的,shallow浅渲染可能在某些场景下没有完全解析子组件的渲染结果(不过从你的debug输出看已经渲染出来了,这个可能性不大)。可以临时换成mount全渲染验证:

// 记得先导入mount:import { mount } from 'enzyme';
wrapper = mount(<TileGrid {...defaultProps} />);

3. 异步渲染未等待完成

如果TileGrid组件内部有异步逻辑(比如请求数据后再渲染容器),beforeEach里的渲染可能还没等组件完成更新就执行了断言。这种情况需要等待组件更新:

it('it displays the tile grid container', async () => {
  await waitFor(() => {
    expect(wrapper.find('.tile-grid__container')).toHaveLength(1);
  });
});

(需要确保你已经导入了waitFor:import { waitFor } from '@testing-library/react';,或者用Enzyme的wrapper.update()强制更新组件)

4. 类名拼写校验

再仔细核对下debug输出里的类名和你断言的是否完全一致,比如有没有多余空格、大小写错误?从你给出的输出看是匹配的,但还是确认下更稳妥。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 02:44:06