Javascript 如何测试jQuery load()是否被Jasmine调用?
我有一个javascript函数Javascript 如何测试jQuery load()是否被Jasmine调用?,javascript,jquery,unit-testing,jasmine,Javascript,Jquery,Unit Testing,Jasmine,我有一个javascript函数deleteSomething(),在其中调用jQuery中的load()函数 function deleteSomething(a, b){ deleteIt(a, b, function(success){ if(success){ $("#table").load(...); } }) } 现在我想用Jasmine测试deleteSomething(),看看是否调用了l
deleteSomething()
,在其中调用jQuery中的load()函数
function deleteSomething(a, b){
deleteIt(a, b, function(success){
if(success){
$("#table").load(...);
}
})
}
现在我想用Jasmine测试deleteSomething()
,看看是否调用了load()。但是得到了错误:应该是间谍,但是得到了函数
describe("deleteSomething", function() {
beforeEach(function () {
...
});
it("should call load() when deleteIt returns true", function() {
spyOn($('#table'), 'load'));
deleteIt.and.callFake(function(a, b, callback){
callback(true);
});
deleteSomething(a, b);
expect($('#table').load).toHaveBeenCalled();
});
});
我是Jasmine的新手,我应该怎么做?你需要监视jQuery,它在这里可用:$.fn
因此,您的代码应该如下所示:
describe("deleteSomething", function() {
it("Should call load", function() {
//$.fn is where the load function is defined
// $("...") returns a new jQuery.fn instance that has load function
// from jQuery.fn.prototype
spyOn($.fn, 'load');
$("#anything").load();
expect($.fn.load).toHaveBeenCalled();
});
});
可以找到有关对象自身成员和原型成员(继承的)差异的更多信息。您是如何监视加载的?共享代码?@thaadikkaran我更新了代码。谢谢。@HMR的答案应该对您有用。如何测试load()是否在正确的元素上被调用?@JennySaqiurilaexpect($.fn.load.calls.argsFor(0)[0])。toBe(“#table”)代码>(第一条评论)信息请点击Thx!我设法让它这样工作:expect($.fn.load.calls.mostRecent().object[0]).toBe(document.getElementById(“table”)代码>