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

模拟点击时出现getById is not a function错误求助

解决TypeError: getById is not a function错误

你犯了API混用的问题:React Test Renderer的TestRenderer.create()返回的实例并没有getById方法,这个查询方法是React Testing Library的render()函数提供的。你已经导入了render,但测试里错误用了TestRenderer创建组件,导致拿不到getById。

直接修改代码,统一使用React Testing Library的API:

import '@testing-library/jest-dom'
import * as React from 'react';
import { fireEvent, render } from "@testing-library/react";
import { jest } from '@jest/globals';

describe('parent component', () => {
    it('renders correctly', () => {
        const { asFragment } = render(<Component />);
        expect(asFragment()).toMatchSnapshot();
    });

    test('my click event', () => {
        const handleClick = jest.fn();
        // 用render替代TestRenderer.create,才能拿到getById
        const { getById } = render(<Component onClick={handleClick} />);
        
        const button = getById('component-div-id');
        fireEvent.click(button);
        
        expect(handleClick).toHaveBeenCalledTimes(1);
    });
});

关键修改说明:

  • 快照测试改用render返回的asFragment()生成快照,这是React Testing Library的标准快照方式。
  • 点击测试完全替换为render创建组件,直接解构出getById查询方法。
  • 可以删掉TestRenderer相关的导入,因为已经不再使用。

额外提醒:要确保你的<Component>内部确实把传入的onClick props绑定到了id为component-div-id的元素上,否则点击事件不会触发传入的handleClick。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:25:44