使用TestUtils模拟ReactJS表单标记不会触发`onSubmit`

时间:2015-04-16 00:03:13

标签: javascript reactjs

我使用 Sinon 来监视这个方法,但是当我尝试模拟{{{}时,似乎没有调用我正在进行间谍活动的方法{\ n} 1 {} onSubmit标记。

这里是JSFiddle

1 个答案:

答案 0 :(得分:1)

首先,这一行:

React.addons.TestUtils.Simulate.submit(Instance, form.getDOMNode());

应该是:

React.addons.TestUtils.Simulate.submit(form.getDOMNode());

但由于组件的结构方式,这并没有解决问题。您已经将当前_handleSubmit函数提供给React进行调用,React将调用该函数。它不会打电话给Instance._handleSubmit(),这是您已取代的。{1}}。如果您将组件更改为:

var that = this; ... <form onSubmit={function() { that._handleSubmit()}}>

它有效,因为您在实例上显式调用该方法。

但是我建议你不断言该方法被调用,而是断言它应该执行的任何副作用都是实际执行的。像变异状态,调用外部服务等