メソッドをスパイするのが遅すぎます。
あなたが割り当てている場所はどこでもthis.view
、のような呼び出しからのものだと思いnew Views.SomeView()
ます。関数を実行さnew
せるのはその呼び出しです。initialize
アップデート
これは非常に面倒なのであまりお勧めしませんが、次のようなことができる可能性があります: (私はシノンを知りませんが、これはベースのジャスミンスパイオブジェクトで行う方法です)
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();
});
別の可能性
以下のようなスパイでそのメソッドをオーバーライドできるようです。それが機能する場合、これがおそらく最もクリーンな方法です。
it('should call my method', function(){
spyOn(Views.SomeView.prototype, "myMethod");
new Views.SomeView();
expect(Views.SomeView.prototype.myMethod).toHaveBeenCalled();
});