Ember集成测试,如何使用等待构建自定义助手?

时间:2013-08-26 22:06:44

标签: javascript testing ember.js helper

我不明白如何使用Ember.Test包提供的等待助手来构建我们自己的助手。我所理解的少数是,我们必须在我们的助手结束时系统地“等待(......)”。 但是如何报告我的异步操作已完成?我们可以将参数传递给wait方法,所以我认为我可以传递一个promise,并在异步操作完成后解析promise ...但它不起作用:D

为了说明我的想法,我做了一个带有示例的JSBIN:http://jsbin.com/OxeniTO/30/

App = Em.Application.create({
  rootElement:"#ember-app"
});

App.setupForTesting();
App.injectTestHelpers();
App.advanceReadiness();


test('Wait 1000ms and fail',function(){
  visit('/').then(function(){
    var promise = $.Deferred();

    setTimeout(function(){
      ok(false, "Assertion failed");
      promise.resolve();
    }, 1000);

    ok(true, "Assert passed");

    return wait(promise);
  });
});

在这种情况下,Qunit的Ember.Test.Adapter不会等待承诺解析。

1 个答案:

答案 0 :(得分:3)

尝试将您的解决承诺包含在Ember.run.later中,而不是使用setTimeout

...
Ember.run.later(function(){
  ok(false, "Assertion failed");
  promise.resolve();
}, 1000);
...

Demo

希望它有所帮助。