让一个简单的例子工作真的很麻烦。我使用的这个例子取自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。
答案 0 :(得分:24)
这是旧的1.x Jasmine语法:
$.ajax.mostRecentCall.args
Jasmine 2的语法是:
$.ajax.calls.mostRecent().args
所以你的断言应该是:
expect($.ajax.calls.mostRecent().args[0]["url"]).toEqual(configuration.url);