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

如何用Enzyme/Jest测试React组件是否渲染指定文本的h3标签

搞定你的Column组件测试

首先得确认你已经装好了enzyme、对应React版本的适配器(比如React17用@wojtekmaj/enzyme-adapter-react-17)和jest这些依赖哈。

先给你补全组件的导出(你原来的代码没导出,测试的时候要用到):

import styled from 'styled-components';

const ColumnTitle = styled.h3`
  color: green;
`;

const Column = (props) => {
  return (
    <ColumnTitle>{props.title}</ColumnTitle>
  )
};

export default Column; // 别忘了导出组件

然后是完整的测试代码,放在对应的Column.test.js文件里:

import { shallow } from 'enzyme';
import Column from './Column'; // 替换成你的组件实际路径

test('column contains h3 with correct text', () => {
  // 第一步:定义测试用的标题文本
  const testTitle = '我是测试标题';
  
  // 第二步:浅渲染组件,传入测试用的props
  const wrapper = shallow(<Column title={testTitle} />);
  
  // 第三步:做两个关键断言
  // 断言h3标签确实被渲染了
  expect(wrapper.find('h3').exists()).toBe(true);
  // 断言h3的文本内容和我们传入的一致
  expect(wrapper.find('h3').text()).toBe(testTitle);
  
  // 也可以用更简洁的写法,效果一样
  // expect(wrapper.find('h3')).toHaveLength(1);
  // expect(wrapper.find('h3').text()).toEqual(testTitle);
});

为啥这么写?给你拆解下:

  • 用shallow而不是mount:因为我们只关心这个Column组件本身的渲染,不需要渲染styled-components生成的底层结构,浅渲染足够用,还更高效。
  • 明确传测试props:给组件一个固定的测试标题,这样断言的时候结果是确定的,不会有歧义。
  • 两个断言缺一不可:既要确认h3标签存在,也要确认它的文本内容正确,这样才能保证组件按预期渲染。

如果是React18+的话,Enzyme的适配可能需要额外配置下,不过核心的测试逻辑是一样的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:00:02