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

Testing callback called after a event trigger with Sinon Js

本文关键字:调用 回调 Sinon Js 测试 事件      更新时间:2023-09-26

这是我第一次用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"。第一个"已打印"make job 1".

如果我修改我的测试:

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

我的间谍被叫来了。所以我的问题是:如何让一个间谍配合一个事件?

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

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