2014-12-02 43 views
11

让一个简单的例子工作真正麻烦。我使用这个例子从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。

小提琴这里:http://jsfiddle.net/sidouglas/85b35993/

回答

18

这老1.x的茉莉花语法:

$.ajax.mostRecentCall.args 

茉莉2的语法是:

$.ajax.calls.mostRecent().args 

所以,你的说法应该是:

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

谢谢花时间回答这个问题。 – Simon 2014-12-04 21:37:00