2014-12-02 21 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