我正在尝试学习 Jasmine spyOn功能。使用spyOn测试调用jQuery.getJSON的函数时,我收到TypeError: Cannot read property 'fail'。
这是我要测试的功能:
getJsonServerNine: function () {
'use strict';
$.getJSON(queryServer.url, function(simpleJson) {
parseResponse(simpleJson);
}).fail(function(error) {
console.log(error.statusText);
});
}
Run Code Online (Sandbox Code Playgroud)
这是我的测试:
it("tests getJSON call", function() {
spyOn($, 'getJSON').and.callFake(function (url, success) {
success({
"nine": 9
});
});
queryServer.getJsonServerNine();
expect(queryServer.queryResult).toBe(9);
});
Run Code Online (Sandbox Code Playgroud)
如果我从getJsonServerNine() 中删除失败回调,那么我的代码就可以工作了。如果我调用jquery.ajax()而不是getJSON那么我可以找到一种方法来让它工作。我怎样才能通过调用$.getJSON 让它工作?
我已经看到了类似问题的这个答案,它非常好,但与我的情况不太匹配,对我不起作用,并且使用过时的 Jasmine 语法。