2

Ember.Test パッケージが提供する待機ヘルパーを使用して独自のヘルパーを構築する方法がわかりません。私が理解したいくつかのことは、ヘルパーの最後で体系的に "wait(...)" を返さなければならないということです。しかし、非同期操作が完了したことをどのように報告しますか? パラメータを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 は promise の解決を待ちません。

4

1 に答える 1

3

Ember.run.laterを使用する代わりに、解決する約束をラップしてみてくださいsetTimeout:

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

デモ

それが役に立てば幸い。

于 2013-08-26T22:25:18.513 に答える