ReactJS:如何测试状态变化
ReactJS: How to test a state change
关于this.setState(...)
的快速问题显然是异步操作,而单元测试是同步的,那么您如何确保测试中setsState
的结果成功发生?即setState
设置正确的值?
你是通过回调来做的吗?间谍/存根?
只是想找出最好的方法。
谢谢
setState
接收一个可选的回调,一旦setState
方法完成调用。您可以将此事件的处理程序作为prop
传递。
例如,假设每次在input
上输入内容时,状态应该改变。您可以将onInputChange
处理程序作为prop
传递,每次由于输入更改而导致状态完成更改时执行该处理程序。我提到的这个事件只对uncontrollable
组件有意义。如果组件是controllable
,则事件将作为I类型触发,并且controller-component
将负责将组件呈现为输入更改的结果。
至于测试,单元测试不一定是同步的。实际上,在我的情况下,我使用done
回调很多。这样的:
it('test something', (done) => { myModule.doSomething((error, success) => done()); });
上面的例子适用于karma
和mocha
,例如
相关文章:
- 我如何为列出的选项卡元素编写一个Protractor测试,它会检查它是否's是否处于活动状态
- Angular ui路由器单元测试(状态为url)
- 如何单元测试输入和解析 UI 路由器状态
- 复选框提醒脚本在动态加载测试时不记得复选框状态.php其中包含复选框
- 如何在循环中测试就绪状态和状态以避免 else 分支
- 单元测试有状态 RequireJS 模块的模式
- 使用适用于iOS的UIAutomation Instruments时,有没有办法在测试之间保持我的应用程序打开状态
- 在 React 中测试按钮的禁用状态
- 无法在量角器测试中保持用户会话活动状态
- 摩卡测试共享状态,因为范围不好
- 用于在纯客户端测试应用程序(javascript/jquery)中维护状态和管理i/o的体系结构
- 使用Jasmine测试Node应用程序的状态:200
- 通过ajax调用在componentDidMount中正确设置测试状态
- 否则,在单元测试中,$urlRouterProvider会重定向到不该重定向的状态
- Jasmine:在函数被调用之前测试变量状态
- ReactJS:如何测试状态变化
- 在Ajax方法间谍调用上测试对象的茉莉花状态
- 单元测试UI路由器嵌套状态
- 实验室测试,server.js总是返回404状态
- 如何对一个只改变内部状态的函数进行单元测试