我有一个javascript函数deleteSomething()
,在其中调用jQuery中的load()函数。
function deleteSomething(a, b){
deleteIt(a, b, function(success){
if(success){
$("#table").load(...);
}
})
}
现在我想用Jasmine测试deleteSomething()
以查看是否正在调用load()。但得到了Error: Expected a spy, but got Function
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的新手,我应该怎么做?
答案 0 :(得分:2)
你需要监视jQuery prototype,它可以在这里找到:$.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();
});
});
可以找到有关对象自身成员和原型成员(继承)之间差异的更多信息{。{3}}。