【发布时间】:2014-08-26 17:52:16
【问题描述】:
在我的 ember 应用程序中,我使用 bootbox (http://bootboxjs.com/) 来确认删除某些模型。 在我的 qunit 测试中,我单击带有 {{ action }} 的按钮,在此操作中我打开了一个引导箱。 在文本中,我单击引导箱上的确定按钮。
但是 andThen 方法不会等待 bootbox 消失。因此,检查模型是否被移除总是错误的。我试图返回一个承诺,但 andThen 助手也不等待承诺。
有没有办法让测试等到bootbox的promise解决,或者bootbox的回调完成?
额外信息: 我的模板是:
<button class="btn btn-default" {{action 'askDelete' target="view"}} data-toggle="tooltip" data-placement="right" {{translateAttr title="trips.remove"}}><i class="fa fa-trash-o"></i></button>
我的观点是:
actions: {
askDelete: function(){
var self = this;
self.$('td').slideUp('500').promise().then(function(){
self.get('controller').send('delete');
});
}
}
我的控制器:
actions: {
save: function(){
self.get('content').save().then(function(){
self.get('controllers.history').transitionToPrevious('trips.index');
});
我的测试:
click(".specific-row .action-buttons button");
andThen(function() {
// Check if the row is indeed removed from the table
ok(find(".content-row table tr:contains('content-of-row')").length === 0, "deleted and removed from the table");
});
但是最新的ok是在控制器中的save动作触发之前调用的,因此总是false。
我在以下情况下制作了一个 jsfiddle: http://jsfiddle.net/21af9puz/1/
【问题讨论】:
-
我找到了另一种显示模式的方法:jsfiddle.net/21af9puz/14
标签: testing asynchronous ember.js qunit