使用Sinon Js在事件触发器之后测试回调

时间:2013-03-22 10:31:23

标签: javascript events sinon spy

这是我对Javacript与Mocha / Sinon / Chai的第一次测试我不知道是否可以这样做:

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;
});

我的间谍被召唤。 所以我的问题是:如何使sinon间谍与事件合作?

1 个答案:

答案 0 :(得分:1)

问题是你首先将函数绑定到事件,然后用{谍}替换obj中的函数。这样做对您绑定到事件的功能没有任何影响,因为这仍然是原始功能。

测试一下你必须在实例化你的objManager之前创建间谍。