让一个简单的例子工作真正麻烦.我正在使用这个例子从
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未定义.
使用茉莉花2.0.2和茉莉花jquery 2.0.5.
解决方法
这个旧的1.x茉莉花语法:
$.ajax.mostRecentCall.args
Jasmine 2的语法是:
$.ajax.calls.mostRecent().args
所以你的断言应该是:
expect($.ajax.calls.mostRecent().args[0]["url"]).toEqual(configuration.url);