我试图通过监视 jQuery 的 ajax 方法来检查数据是否发送到服务器。一切正常,直到我向 ajax 帖子添加“完成”功能为止。
我从 Jasmine 得到的错误是:TypeError: Cannot read property 'done' of undefined
Jasmine 规范:
describe("Post New Project Definition", function () {
it("should post to GeoServer", function () {
var information = {"i am": Math.random()};
spyOn($, "ajax");
addProjectDefinition.send(information);
expect($.ajax).toHaveBeenCalledWith({
method: "POST",
url: "../svir/add_project_definition",
data: information
});
});
});
我的 Ajax 调用:
function addProjectDefinition() {}
addProjectDefinition.send = function(information) {
var foobar = $.ajax({
method: "POST",
url: "../svir/add_project_definition",
data: information
});
// NOT WORKING
foobar.done(function(){
console.log('Hi I'm done:');
});
};
最佳答案
您应该在测试中替换此行:
spyOn($, "ajax");
与:
spyOn($, "ajax").and.callFake(function() { return { done: function() {}}});
关于javascript - Jasmin spy 监听 AJAX 无法读取未定义的属性 'done',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30484218/