Ember.js 测试中的Ember.run.later行为

Ember.js 测试中的Ember.run.later行为,ember.js,ember-cli,Ember.js,Ember Cli,基于本文,我在Ember CLI应用程序中构建了一个简单的flash消息服务: 正如文章中的代码所示,服务依赖于Ember.run.later在指定的时间段后销毁消息 我在我的应用程序的各个部分,在路由和控制器级别上使用此服务 我想通过一些集成测试来测试这个功能。例如,在应用程序路由上,用户可以向后端提交搜索查询。如果查询的格式不正确,那么我将使用flash消息服务抛出一个错误。同样,我可以检查身份验证是否成功: `import Ember from 'ember'` `import Appl

基于本文,我在Ember CLI应用程序中构建了一个简单的flash消息服务:

正如文章中的代码所示,服务依赖于Ember.run.later在指定的时间段后销毁消息

我在我的应用程序的各个部分,在路由和控制器级别上使用此服务

我想通过一些集成测试来测试这个功能。例如,在应用程序路由上,用户可以向后端提交搜索查询。如果查询的格式不正确,那么我将使用flash消息服务抛出一个错误。同样,我可以检查身份验证是否成功:

`import Ember from 'ember'`
`import ApplicationRouteMixin from 'simple-auth/mixins/application-route-mixin'`

ApplicationRoute = Ember.Route.extend ApplicationRouteMixin,
  setupController: (ctrl) ->
    flashes = @get 'flashes'
    ctrl.set 'flashes', flashes
  actions:
    error: (e) -> 
      if e.jqXHR and e.jqXHR.status is 404
        @get('flashes').warning('no data from the server')
    sessionAuthenticationFailed: (e) ->
      @get('flashes').danger('another relevant error message')

`export default ApplicationRoute`
为了测试这一点,我将模拟所需的行为,然后检查消息是否存在:

test 'checking if the error appears on a 404', ->
  # series of steps that lead to a 404
  andThen ->
    equal(find('.ember-notify').text(), 'no data from the server')
其中'ember notify'是包含闪现消息的div的类名

我在测试容器中看到所需的消息弹出,然后测试“暂停”,直到消息消失。这意味着我的测试最终失败了,因为它会在div消失后检查div是否存在

我的理解是,这一点在本文中有解释:

e、 例如,“余烬测试检查预定的计时器,以在拆除应用程序之前完成。”

因此,我的测试环境将始终等待Ember.run.later完成

关于如何处理这个问题有什么想法/想法吗?是否有更好的方法在路由级别测试错误事件

例如,我的想法是,我可以直接测试是否在应用程序路由上调用了错误事件,但我不知道如何做到这一点(以及如何将此模式扩展到在控制器上测试,在控制器上我还使用flash消息服务?)

谢谢