Ember UI在测试期间不触发Ember控制器操作

时间:2014-06-03 14:13:13

标签: javascript ruby-on-rails ember.js selenium-webdriver capybara

我有一个非常有趣的问题。

我们让Rails + Capybara与我们的Ember前端进行集成测试。

我遇到的问题是,在运行我们的:Selenium强力测试时, SOMETIMES (这是关键的一点,有时候),一个用户界面将按下元素并且不会触发Ember动作。

所以,这不是与ajax相关的问题。 我没有收到数据错误。 Nor 一个Ember错误,也不一个js错误,一个Capybara::ElementNotFound错误。

有问题的UI已加载,Capybara然后成功点击按钮,然后永远不会调用Ember操作。并不是说它需要花费太长时间来回应,而是根本不会触发它。

我知道这是因为我记录了Ember动作(console.log())并且可以看到它在它起作用时发生,并且在它没有发生时就不会发生。

所以,我的理论是...... Ember在设置所有j来处理动作之前加载了UI。这有可能吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试在测试中明确触发run loop

答案 1 :(得分:0)

想出来。

似乎Ember模板以及UI将在路由器的setupController属性中的所有方法完成之前加载。

我真的不太了解Ember,了解这是如何以及为什么会这样,但我能够通过以下方式解决这个问题:

  1. setupController中的所有回调结束时,我将controller属性设置为true。 'controller.set('setupDone',true)'

  2. 在该路线的模板中,我将UI包装在条件{{#if setupDone}}