this.setState(...)
的快速问题显然是异步操作,单元测试是同步的,那么您究竟如何确保测试中setsState
的结果成功? IE setState
正在设置正确的值吗?
你是通过回调做的吗?间谍/存根?
试图找出最佳方法。
谢谢
答案 0 :(得分:2)
setState
收到一个setState
方法完成后调用的可选回调。您可以将此事件的处理程序作为prop
传递。
例如,假设每次在input
上输入内容时,状态都应该更改。您可以将onInputChange
处理程序作为prop
传递,每当状态因输入更改而完成更改时执行该处理程序。我提到的这个事件只对uncontrollable
组件有意义。如果组件是controllable
,则事件会在我键入时触发,并且controller-component
会因输入更改而重新呈现组件。
至于测试,单元测试不一定是同步的。实际上,在我的情况下,我经常使用done
回调。像这样:
it('test something', (done) => { myModule.doSomething((error, success) => done()); });
上述示例适用于karma
和mocha
,例如。