【发布时间】:2013-11-06 21:43:06
【问题描述】:
我正在开发一个基于 Ember 的应用程序,并使用 QUnit 和 Teaspoon 进行前端集成测试。我目前正在尝试使用Ember.run.later 的递归调用实现涉及常规服务器查询的新功能。用 CoffeeScript 编写的非常简化的代码是:
App.Widget = DS.Model.extend
...
update: ->
widget = @
options = {...}
@store.findQuery('widget_children', options).then (data) ->
(do stuff with data)
Ember.run.later widget, widget.update, 10000
然后我有一组不相关的测试,包括点击页面的各种元素(使用 Ember.Test 中的 click 帮助器),类似于以下内容:
asyncTest 'Gadget modal displays on link click', 1, ->
Ember.run ->
click($('.gadget a')).then ->
start()
equal $('#gadget-modal').length, 1, "Gadget modal not present"
我现在看到的是,当 Teaspoon 进行点击测试时(由于应用程序设置,later 调用未决),它正确执行点击,但承诺永远不会解决,实际的测试断言未经测试。
我假设 promise 没有解决,因为延迟的 later 调用被认为是异步行为,click 助手正在等待完成,除了它完成时它只是设置另一个 later 调用- 所以它永远不会解决。
有没有办法解决这个问题?
【问题讨论】:
标签: ember.js ember-data qunit rsvp.js ember-testing