14

我希望能够模拟用户使用 reactjs 在文本框中输入内容,以便我可以测试我的验证状态消息。

我有一个在 keyUp 上验证的反应组件

下面是我尝试过的一个简单示例。

nameInput.props.value = 'a';
React.addons.TestUtils.Simulate.keyUp(nameInput);
React.addons.TestUtils.findRenderedDOMComponentWithClass(component, 'has-error');

当我在验证器中调试时,这似乎并没有改变绑定文本框的值

React.addons.TestUtils.Simulate.keyUp(nameInput, {key: 'a'});
React.addons.TestUtils.findRenderedDOMComponentWithClass(component, 'has-error');

这也不行。

有人可以指出我在正确的轨道上吗,第二个与我可以在模拟周围找到的文档内联(http://facebook.github.io/react/docs/test-utils.html),第一个对我来说很有意义(设置实际的文本框值,然后伪造一个事件)

4

2 回答 2

26

通过设置nameInput.props.value = 'a';,您实际上并没有更新组件中的值。

您应该使用React.addons.TestUtils.Simulate.change(nameInput, { target: { value: 'a' } });或类似的东西来模拟修改实际值。

于 2014-07-14T23:29:36.793 回答
1

我发现这种语法对我来说效果更好:

  const emailInput = component.refs.userEmailInput;
  emailInput.value = 'test@gmail.com';
  Simulate.change(component.refs.userEmailInput);

第二行使用文本“test@gmail.com”更新输入。最后一行触发更改。

于 2016-05-11T21:33:38.123 回答