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

测试被Styled-Components包裹的组件时出现TypeError错误求助

Styled Components组件测试报错排查

问题背景

我在为组件编写测试用例,测试代码如下:

render(<DetailsPage/>);
expect(screen.byTestId("details-wrapper-select")).toBeInDocument();

执行测试后出现以下两个错误:

错误1

console.error
Error
Uncaught [TypeError: Cannot read properties of undefined (reading 'length')] at
at reportException (/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js:66:24)

错误2

135 | render()
at partRule (node_modules/styled-components/src/utils/isStaticRules.js:6:16)
at e.warnTooManyClasses [as generateAndInjectStyles) (node_modules/styled-components/src/models/Com node_modules/styled-components/src/models/StyledComponent.js:90:5)
at $as ( at WrappedStyledComponent (node_modules/styled-components/src/models/StyledComponent.js:128:44)

调试步骤

  • 注释掉DetailsPage组件内部所有内容,仅保留外层的DetailsWrapper:
return (
        <DetailsWrapper>
           // 注释掉内部所有内容...
        </DetailsWrapper>
)

测试仍抛出相同错误;

  • 将组件改为直接返回原生div时,测试用例通过:
return (
    <div data-testid="details-wrapper-select">hello</div> 
)
  • 但只要把div嵌套到DetailsWrapper内部,错误就会重现:
return (
        <DetailsWrapper>
            <div data-testid="details-wrapper-select">hello</div>
        </DetailsWrapper>
)

补充说明:DetailsWrapper是一个未传入任何props的styled.div。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:12:15