用Sinon Js测试事件触发后调用的回调
Testing callback called after a event trigger with Sinon Js
这是我第一次用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。 相关文章:
- 为什么(如何)'这'从函数内部调用回调时发生更改
- 在初始函数完成之前调用回调函数
- Node.js exec调用从不调用回调
- 如何从参数数组中调用回调
- 如何在调用回调之前禁用按钮
- 加载文件,然后调用回调函数
- async.retry-已调用回调
- 节点.js“已调用回调”.但是没有任何其他回调
- JavaScript - 返回承诺和/或调用回调
- 解析查询.首次成功/错误 间歇性不调用回调
- 如何使用另一个 JavaScript 文件中定义的类名调用回调函数
- ReactJs:this.setState的情况下不调用回调函数
- $.post到PHP文件-在包含循环完成之前不会调用回调
- 异步加载ASP.NET绑定的Javascript,然后调用回调
- setTimeout()在其设置时间之前连续调用回调函数
- 在其他回调js中调用回调
- Ajax 调用重新加载页面,而不是调用回调函数
- Angularjs $http.get 不调用回调
- 未调用回调函数
- jQuery JSONP 不调用回调