プロパティが変更されたときにイベントを発生させるコントローラーを単体テストしたいと思います。
コントローラーは次のようになります。
App.MyController = Ember.Controller.extend({
...
observeFilterFieldChanges: function() {
console.log("observeFilterFieldChanges");
this.setActiveSortField();
this.send("queryChanged");
}.observes("sorting.fields.@each.active"),
...
});
そして、私のテストは次のとおりです。
test('changing sort field via sort.fields will trigger query changed', function () {
var queryChangedCalled = false;
var tmpListController = App.MyController.create({
actions: {
queryChanged: function () {
console.log("querychanged called from controller");
queryChangedCalled = true;
}
}
});
// trigger the change
tmpListController.set("sorting.fields.0.active", true);
stop();
// not sure if I need to wait for the run loop to finish
Ember.run.schedule('afterRender', this, function () {
start();
ok(queryChangedCalled, "querChangedCalled should be true");
});
});
コントローラーのアクション queryChanged が呼び出されないため、これは機能しません。(ただし、オブザーバーは呼び出されます)
イベントが送信されたかどうかをテストする最良の方法は何ですか?
わかりやすくするための更新: 上記のコードはアプリでうまく機能します。送信されたアクションは、ルートで適切に消費されます。私が望むのは、将来の変更から私を守るための単体テストです:)