1

これは、Mocha/Sinon/Chai を使用した Javacript での私の最初のテストです。これが可能かどうかはわかりません。

var obj = {
    first : function () {
        console.log('make job 1');
    }
};

var objManager = function() {
    $(document).on('event1', obj.first);
};

new objManager();

var spy = sinon.spy(obj, 'first');

describe('Test', function () {

    it('My first test', function () {
        $(document).trigger('event1');
        spy.should.not.have.been.called;
    });
});

スパイが呼び出されず、その理由がわかりません...関数「obj.first」が「make job 1」を出力しました。

テストを次のように変更した場合:

it('My first test', function () {
    obj.first();
    spy.should.not.have.been.called;
});

私のスパイが呼び出されます。だから私の質問は次のとおりです。

4

1 に答える 1

1

問題は、最初に関数をイベントにバインドしてから、その関数をobjスパイに置き換えることです。これを行っても、イベントにバインドした関数には何の影響もありません。これは元の関数のままです。

これをテストして、インスタンス化する前にスパイを作成する必要がありますobjManager

于 2013-03-24T15:26:11.253 に答える