我使用摩卡單元測試我的控制器。我的控制器看起來像:如何使用this.get('store')的單元測試控制器
AS.MyController = Ember.ObjectController.extend(Ember.Validations.Mixin, {
name: null,
description: null,
init: function() {
this._super();
this.get('store').find('something');
},
....
});
而且我的測試是這樣開始的:
describe("MyControllerTest", function() {
//tried but didn't work
//delete AS.MyController.init;
var controller = AS.MyController.create();
.....
})
,瀏覽器總是會引發錯誤的「this.get(‘商店’)」在初始化呼叫。我不確定是否需要刪除所有內容,或者需要解決它,因爲我的測試用例根本不依賴於存儲。無論哪種情況,我都無法在那裏找到很多東西,並會非常感謝任何反饋。
感謝,迪伊
JSBIN:http://jsbin.com/aMASeq/3/
UPDATE: 可以有很多方法來解決這個問題,但我最終做的是重新構造控制器代碼位把所有的函數調用存儲到不同的動作中,然後在init中使用this.send('actioName')調用這些動作函數。在我的單元測試中,在實例化控制器之前,我重新打開控制器來修改這些動作函數(更改動作函數比改變init函數本身更容易,當嘗試更改init時,我總是遇到一些js錯誤)。例如:
AS.MyController.reopen({actions: {setSomeActionThatUsesStore: function() {
//do something that doesn't involve using store
}}});
爲什麼你打電話給商店查找裏面的init? –
我在句柄模板中有一個select元素,它由查找調用返回的內容填充。我沒有這個控制器的路由器,因爲我通過另一個模板中的「渲染控制器」調用它。 –
拋出的錯誤是什麼? –