使用reactJs TestUtils模拟文本输入

Not*_*ple 14 javascript unit-testing reactjs reactjs-testutils

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

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

以下是我尝试过的一个简单示例.

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

当我在验证器中调试时,这似乎不会更改绑定文本框的值

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

这也不是.

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

jon*_*wzz 26

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

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

  • 有关Simulate的更全面的文档吗?我只能找到一些例子,我想更多地了解"规格".为什么"目标",为什么"价值"?还有哪些其他选择? (3认同)
  • 事件的MDN参考页面可能是一个好看的地方,因为每个事件的页面都包含了一些值变化的细节:https://developer.mozilla.org/en-US/docs/Web/Events.除此之外,您还可以查看W3规范:http://www.w3.org/TR/DOM-Level-2-Events/events.html. (2认同)