1

transitionToが でラップされていない場合Ember.run、実行ループの自動実行がないため、テストは失敗します。

export default Ember.Controller.extend({
  actions: {
    actionName: function() {
      var router = this.get('target');

      setTimeout(function() {
        // I want to get rid of this `Ember.run` wrapper, and just use
        // `router.transitionTo('index');`
        Ember.run(function() {
          router.transitionTo('index');
        });
      });
    }
  }
});

Ember.runテストモードで取り除く方法はありますか?

ありがとう!

** アップデート **

申し訳ありませんが、最も重要なことを省略しました。問題は、非同期タスクが実行されているときにのみ存在Ember.runし、テストモードでは除外されています。で例を更新しましたsetTimeout

4

1 に答える 1

2

通常設定する ember アプリをテストするときEmber.testing = true、これは自動実行ループを無効にします。Ember.run

Ember.runしたがって、必須です。そうしないと、ember が内部で実行している他のタスクと同期してコードが実行されないため、競合状態が発生します。

Ember.runしたがって、ラッパーを使用する方が良いと思います。

それが役に立てば幸い。

于 2013-09-06T12:03:19.857 に答える