【发布时间】:2016-01-26 21:43:15
【问题描述】:
更新:为此@React: <input> value never updated in unit test创建了一个新的、更清晰的问题
我有一个类似这样的 React 组件:
var Example = React.createClass({
render: function() {
return <input type="text"
onChange = {this.props.onChange}
value = {this.props.text}
data-what = {this.props.text} />;
}
});
我有一个单元测试,我这样做:
- 使用
TestUtils.renderIntoDocument创建组件,使用“FIRST”作为state.text。 - 使用
Simulate.change将文本更改为“SECOND”。
这是最奇怪的事情。如果我在每一步之后转储 HTML,我希望看到:
<input type="text" data-what="FIRST" value="FIRST">
<input type="text" data-what="SECOND" value="SECOND">
……但出于某种奇怪的原因,我不断得到以下结果:
<input type="text" data-what="FIRST" value="FIRST">
<input type="text" data-what="SECOND" value="FIRST">
在第二次转储中,value 仍然是“FIRST”。什么??
很明显管道正在工作,因为data-what 已正确更改为“SECOND”,但为什么不是该值?很困惑。
【问题讨论】:
-
你能发布你组件的
onChange方法吗?我怀疑您希望this.text成为this.state.text而不是设置this.text您应该调用this.setState({text: 'text'})。 -
什么是this.text?应该是 props 还是 state?
-
哦,我的错,我真笨。这是
this.props.text- 我现在会更新。
标签: unit-testing reactjs