我试图通过监视jQuery的ajax方法来检查数据是否被发送到服务器。一切顺利,直到我添加完成的'功能到ajax帖子。
我从Jasmine得到的错误是:TypeError:无法读取属性'已完成'未定义的
Jasmin spec:
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:');
});
};
答案 0 :(得分:3)
您应该在测试中替换此行:
spyOn($, "ajax");
使用:
spyOn($, "ajax").and.callFake(function() { return { done: function() {}}});