2

したがって、この関数が指定された引数で 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.

何故ですか?モック オブジェクトには、元のオブジェクトとまったく同じプロパティ/関数が含まれているべきではありませんか?

4

1 に答える 1