无法在jasmine 2.0.2中使用$.ajax.mostRecentCall,求解。

12

我遇到了很大的麻烦,无法让一个简单的例子工作。我正在使用从https://gist.github.com/Madhuka/7854709获取的这个例子。

describe("Test for spies", function() {
 function sendRequest(callbacks, configuration) {
        $.ajax({
            url: configuration.url,
            dataType: "json",
            success: function(data) {
                callbacks.checkForInformation(data);
            },
            error: function(data) {
                callbacks.displayErrorMessage();
            },
            timeout: configuration.remainingCallTime
        });
    }

    it("should make an Ajax request to the correct URL", function() {

    var configuration = {
        url : "http://www.google.com",
        remainingCallTime : 30000
    };

        spyOn($, "ajax");

        sendRequest(undefined, configuration);
        expect($.ajax.mostRecentCall.args[0]["url"]).toEqual(configuration.url);
    });
});
无论出于什么原因,$.ajax.mostRecentCall未定义。
使用 jasmine 2.0.2 和 jasmine jquery 2.0.5。
这里是 jsfiddle 链接:http://jsfiddle.net/sidouglas/85b35993/
1个回答

24

这是旧版1.x的Jasmine语法:

$.ajax.mostRecentCall.args

Jasmine 2的语法如下:

$.ajax.calls.mostRecent().args

所以你的断言应该是:

expect($.ajax.calls.mostRecent().args[0]["url"]).toEqual(configuration.url);

1
感谢您抽出时间回答这个问题。 - Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接