したがって、この関数が指定された引数で ctrl.set を呼び出すことをテストしようとしています。
didInsertElement: function() {
$(".poptop").popover({placement: 'top',trigger: 'hover'});
var ctrl = this.get('controller');
ctrl.set('capsSet', false);
return;
私の QUnit テストは次のようになります。
QUnit.test("Let's blah", function() {
var controller = App.LoginIndexController.create();
var mockController = sinon.mock(controller);
mockController.expects("set").once().callsArgWith(2, 'capsSet', false);
loginInputFieldView.set("controller", mockController);
loginInputFieldView.didInsertElement();
mockController.verify();
});
呼び出されるとthis.get('controller')
、テストで設定したモック オブジェクトが返されます。set()
残念ながら、モック オブジェクトには最上位の関数が含まれていません。その set 関数が内部にctrl.object
あり、次のエラーが発生します。
TypeError: Object # has no method 'set'" error.
何故ですか?モック オブジェクトには、元のオブジェクトとまったく同じプロパティ/関数が含まれているべきではありませんか?