【问题标题】:react testUtils simulate click on a radio button not triggering onchange反应 testUtils 模拟单击​​单选按钮不触发 onchange
【发布时间】:2026-01-15 17:45:02
【问题描述】:

用于使用 JSDom、mocha、chai 和 ReactTestUtils 测试 Im。

我的一个组件有三个单选按钮,当检测到更改时 (onChange) 将运行一个函数。

在手动测试中一切正常,但是当我在其上使用simulate.Click 时似乎无法触发该功能。

        var FrequencyFormInstance = ReactTestUtils.findRenderedComponentWithType(rootElement, FrequencyForm);
        var frequencyNode = ReactDom.findDOMNode(FrequencyFormInstance);

        var oneOfTheRadioButton = frequencyNode.children[1].children[2];

        ReactTestUtils.Simulate.click(oneOfTheRadioButton);

然后一些断言告诉我组件内部的函数从未运行过,因此它从未检测到更改(单击单选按钮)。

关于为什么的任何线索?

【问题讨论】:

  • 问题解决了吗?
  • 从我的人民币中,我将simulate.click 更改为simulate.change,并且成功了。你有遇到同样的问题吗?
  • 是的,但我将 onChage 处理程序更改为 onClick 并使用 Simulate.click 方法。据我了解,它对应于 React 文档。

标签: javascript reactjs reactjs-testutils


【解决方案1】:

这是这里讨论的内容:https://github.com/facebook/jest/issues/242

基本上您需要使用更改,因为它是一个输入,但还需要传递额外的数据。

var FrequencyFormInstance = ReactTestUtils.findRenderedComponentWithType(rootElement, FrequencyForm);
var frequencyNode = ReactDom.findDOMNode(FrequencyFormInstance);

var oneOfTheRadioButton = frequencyNode.children[1].children[2];

ReactTestUtils.Simulate.change(checkbox.getDOMNode(), {"target": {"checked": true}}); 

【讨论】:

    最近更新 更多