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

使用[event.target.name]的React组件Jest测试不通过如何解决?

问题原因

你的测试代码在模拟change事件时,仅给target对象传入了value属性,没有传入和DOM元素匹配的name属性。
你的handleChange方法使用[event.target.name]作为动态键更新state,当event.target.name不存在时,计算得到的键为undefined,不会命中state.comment字段,也就无法正确更新textarea绑定的值,因此测试不通过。

解决方案

只需要修改测试代码,在模拟change事件时补充传入name属性,值和textarea标签上的name属性(comment)保持一致即可,不需要修改原有组件的逻辑:

it('has a text area where the users can type in', () => {
    wrapped.find('textarea').simulate('change', {
        target: {
            name: 'comment',
            value: 'new comment'
        }
    })
    wrapped.update()
    expect(wrapped.find('textarea').prop('value')).toEqual('new comment')
})
补充说明

后续如果组件新增其他表单控件需要复用同一个handleChange方法做动态state更新,只需要在对应测试的模拟事件中传入和表单元素name属性匹配的值,就可以正常完成测试,不用调整handleChange的业务代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:15:03