Jasmin间谍听AJAX无法读取属性'已完成'未定义的

时间:2015-05-27 13:39:12

标签: javascript jquery ajax jasmine

我试图通过监视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:');
        });

};

1 个答案:

答案 0 :(得分:3)

您应该在测试中替换此行:

spyOn($, "ajax");

使用:

spyOn($, "ajax").and.callFake(function() { return { done: function() {}}});