ReactJS:如何测试状态变化

时间:2015-07-29 01:46:55

标签: javascript reactjs

this.setState(...)的快速问题显然是异步操作,单元测试是同步的,那么您究竟如何确保测试中setsState的结果成功? IE setState正在设置正确的值吗?

你是通过回调做的吗?间谍/存根?

试图找出最佳方法。

谢谢

1 个答案:

答案 0 :(得分:2)

setState收到一个setState方法完成后调用的可选回调。您可以将此事件的处理程序作为prop传递。

例如,假设每次在input上输入内容时,状态都应该更改。您可以将onInputChange处理程序作为prop传递,每当状态因输入更改而完成更改时执行该处理程序。我提到的这个事件只对uncontrollable组件有意义。如果组件是controllable,则事件会在我键入时触发,并且controller-component会因输入更改而重新呈现组件。

至于测试,单元测试不一定是同步的。实际上,在我的情况下,我经常使用done回调。像这样:

it('test something', (done) => { myModule.doSomething((error, success) => done()); });

上述示例适用于karmamocha,例如。