Jasmin spy监听AJAX无法读取属性'done'的定义

Jasmin spy listens on AJAX Cannot read property 'done' of undefined

本文关键字:done 定义 属性 读取 监听 spy AJAX Jasmin      更新时间:2023-09-26

我试图检查数据是否通过监视jQuery的ajax方法发送到服务器。一切工作,直到我添加一个'完成'函数到ajax post。

我从Jasmine得到的错误是:TypeError: Cannot read property 'done' of undefined

茉莉花规范:

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
        });
    });
});

My Ajax call:

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() {}}});