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