Вы слишком поздно следите за методом.
Везде, где вы назначаете this.view
Предполагаю, что это от звонка, такого как new Views.SomeView()
. Это значит, что вызов new
приведет к выполнению функции initialize
.
Update
Я не рекомендую делать это, потому что это довольно грязный, но возможно, вы можете сделать что-то вроде следующего: (я не знаю Sinon, но это, как вы бы это сделать с шпионскими объектами базы жасминовый)
it('should call my method', function(){
var dummyView = new Views.SomeView();
spyOn(dummyView, "myMethod");
spyOn(Views, "SomeView").andCallFake(function() {
dummyView.initialize();
return dummyView;
});
new Views.SomeView();
expect(dummyView.myMethod).toHaveBeenCalled();
});
Другой Possiblilty
Похоже, это может быть возможным, чтобы переопределить этот метод с таким py, как показано ниже. Если это работает, возможно, это самый чистый способ сделать это.
it('should call my method', function(){
spyOn(Views.SomeView.prototype, "myMethod");
new Views.SomeView();
expect(Views.SomeView.prototype.myMethod).toHaveBeenCalled();
});
Есть ли способ шпионаже раньше? Может быть, шпионить прототип Backbone.View? – chchrist
Может быть. Попробуйте что-то вроде того, что я добавил. Я действительно не рекомендую это делать. Он начинает выглядеть отвратительным и, возможно, не дает вам такой возможности для тестирования. –
Второй пример работает как шарм. Благодаря! – chchrist