Javascript 使用Sinon Js测试事件触发器后调用的回调

Javascript 使用Sinon Js测试事件触发器后调用的回调,javascript,events,sinon,spy,Javascript,Events,Sinon,Spy,这是我第一次使用Mocha/Sinon/Chai对JavaScript进行测试,我不知道是否可以这样做: var obj = { first : function () { console.log('make job 1'); } }; var objManager = function() { $(document).on('event1', obj.first); }; new objManager(); var spy = sinon.spy(

这是我第一次使用Mocha/Sinon/Chai对JavaScript进行测试,我不知道是否可以这样做:

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 spy与事件一起工作

问题在于首先将函数绑定到事件,然后用spy替换
obj
中的函数。这样做不会对绑定到事件的函数产生任何影响,因为这仍然是原始函数


在实例化
objManager
之前,您必须先创建spy

问题在于首先将函数绑定到事件,然后用spy替换
obj
中的函数。这样做不会对绑定到事件的函数产生任何影响,因为这仍然是原始函数

在实例化
objManager
之前,您必须先创建spy