我正在开发一个基于 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
然后,我进行了一组不相关的测试,这些测试涉及单击页面的各种元素(使用 中的click
帮助器Ember.Test
),类似于以下内容:
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
由于应用程序设置而导致呼叫挂起)时,它会正确执行点击,但承诺永远不会解决,实际的测试断言也没有经过测试。
我假设承诺没有解决,因为延迟later
调用被认为是click
助手等待完成的异步行为,除了当它完成时它只是设置另一个later
调用 - 所以它永远不会被解决。
有没有解决的办法?