2015-04-27 50 views
1

所以我期待着为ReactJS应用程序编写集成级别测试(您正在与真实数据库进行交谈,并且完全没有被模拟),并且认为Selenium是此类测试的默认选择。通过使用Angular 1.x,您可以判断角度的摘要循环是否仍在处理DOM,从而无需添加效率低下且不灵活的睡眠。ReactJS Selenium Testing

ReactJS中是否有类似的东西可以用来代替一堆flakey睡眠命令?

+0

是:Selenium显式等待。 – SiKing

回答

0

始终从根组件

渲染有可以传递到渲染功能的回调:

ReactComponent render(
    ReactElement element, 
    DOMElement container, 
    [function callback] 
) 

您还可以收听顶部组件的componentDidUpdate方法。

不幸的是,如果您总是从顶层组件渲染,这意味着您在不使用任何本地状态的情况下管理React之外的所有状态,并将其作为高效的模板引擎以纯功能方式使用。 Some frameworks帮助你这样做。

即使Flux并没有真正执行此操作(至少原始实施),因为Flux商店不一定是从最顶层注入的道具。 (他们在atom-react

并非总是从根组件渲染

我不知道有任何优雅的解决这个问题,但这里是我会做什么:

  • 实施所有组件上的所有生命周期方法,例如使用Mixin,并从这些回调调用全局函数notifyReactIsWorking
  • 反弹notifyReactIsWorking_.debounce(changeMeter, 1000, false)

这样,当调用notifyReactIsWorking时,这意味着React已经稳定下来,因为没有一个生命周期方法被调用超过1秒钟。

这是一个黑客,但可能应该在大多数情况下工作。

也对更高效的解决方案感兴趣:)