Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何测试jQuery load()是否被Jasmine调用?_Javascript_Jquery_Unit Testing_Jasmine - Fatal编程技术网

Javascript 如何测试jQuery load()是否被Jasmine调用?

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

我有一个javascript函数
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()是否在正确的元素上被调用?@JennySaqiurila
expect($.fn.load.calls.argsFor(0)[0])。toBe(“#table”)(第一条评论)信息请点击Thx!我设法让它这样工作:
expect($.fn.load.calls.mostRecent().object[0]).toBe(document.getElementById(“table”)