Я модульно тестирую свой контроллер, используя мокко. Мой контроллер выглядит так:
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('store') в init. Я не уверен, нужно ли мне что-то заглушать, или для этого есть обходной путь, потому что мой тестовый пример вообще не полагается на хранилище. В любом случае, я не смог найти там многого и был бы очень признателен за любую обратную связь.
Спасибо, Ди
JSBIN: http://jsbin.com/aMASeq/3/
ОБНОВЛЕНИЕ: может быть много способов решить эту проблему, но в итоге я немного реструктурировал код контроллера, поместив все вызовы функций для сохранения в отдельные действия, а затем в init я совершать вызовы этих функций действий, используя this.send('actionName'). В моем модульном тесте перед созданием экземпляра контроллера я снова открываю контроллер, чтобы изменить эти функции действия (проще изменить функцию действия, чем изменить саму функцию инициализации, при попытке изменить инициализацию я всегда сталкивался с некоторой ошибкой js). Например:
AS.MyController.reopen({actions: {setSomeActionThatUsesStore: function () {
//do something that doesn't involve using store
}}});