在测试期间,Ember UI不会触发Ember控制器动作

Ember UI not triggering Ember controller actions during testing

本文关键字:Ember 控制器 UI 测试      更新时间:2023-09-26

我有一个很有趣的问题。

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

我遇到的问题是,当运行我们的:Selenium动力测试时,有时(这是关键的一点,有时),UI元素将被按下,Ember动作不会开火。

所以,这不是 ajax相关的问题。我没有得到数据错误。不是 Ember错误,不是 js错误,不是 Capybara::ElementNotFound错误。

正在讨论的UI已经加载,然后Capybara成功地点击了按钮,然后烬动作从未被调用。并不是反应时间太长,只是没有触发。

我知道这一点,因为我正在记录烬行动(console.log()),可以看到它发生时,它的工作,而不是发生时,它没有。

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

您是否尝试过在测试中显式触发运行循环?

我明白了

看起来好像烬模板,因此UI,将加载之前在路由器的setupController属性的所有方法完成。

我真的不太了解Ember,无法理解它是如何以及为什么这样工作的,但是我能够通过做以下事情来解决这个问题:

  1. setupController的所有回调结束时,我将控制器属性设置为true。的控制器。集(setupDone,真的)'

  2. 在该路由的模板中,我将UI封装在一个条件{{#if setupDone}}