2016-04-14 27 views
0

我是茉莉花的新手。 我正在尋找一種方法來檢查一個特定節點是否存在於ajax響應中。我正在使用grunt運行jasmine命令行。我能夠在成功調用Ajax後檢查函數是否被調用。我的代碼看起來像這樣。如何用茉莉花測試阿賈克斯反應

describe("Ajax call test.", function() { 
    it("should execute the callback function on success", function() { 
     spyOn($, "ajax").and.callFake(function(options) { 
      options.success(); 
     }); 
     var callback = jasmine.createSpy(); 
     getSampleResponse(callback); 
     expect(callback).toHaveBeenCalled(); 
    }); 

    function getSampleResponse(callback){ 
     $.ajax({url: "template/sample.json", dataType:"text", success:function(res){    
      callback(); 
      } 
     }); 
    } 
}); 

我的sample.json文件看起來像這樣。

{ 
    success: { 

    "numSearches":5, 
    "data":[ 
     {title:'search title 1', count:1}, 
     {title:'search title 2', count:1}, 
     {title:'search title 3', count:1}, 
     {title:'search title 4', count:1}, 
     {title:'search title 5', count:1} 
    ] 

    } 
} 

我想檢查響應是否包含success.numSearches。我如何使用茉莉花做到這一點。 在此先感謝。

回答

0

拉傑什,

您已經滅掉了模擬實際的AJAX調用。你是否正在測試numSearches的模擬響應?

在您的成功電話中,您未將json響應res傳遞給您的回調方法。

這裏是一個很好的文章來測試AJAX調用茉莉花 http://www.htmlgoodies.com/html5/javascript/testing-ajax-event-handlers-using-jasmine-spies.html

一種方式來測試你的Ajax響應是

describe("Ajax call test.", function() { it("should execute the callback function on success", function() { var callbackCalled = false; function myCallback(jsonData) { callbackCalled = true; expect(jsonData.numSearches).toBeEqual(5); } getSampleResponse(myCallback); expect(callbackCalled).toBeTruthy(); });

function getSampleResponse(callback){ 
    $.ajax({url: "template/sample.json", dataType:"text", success:function(res){    
     callback(res); 
     } 
    }); 
} 

});`

請請注意,我將res作爲參數添加到您的回調方法

+0

我沒有找到異步ajax回調數據的任何解決方案。所以我試圖像這樣至少得到了被稱爲成功的功能。我能夠通過在$ .ajax中添加async:false來測試ajax調用,這使得該規範等待完成。只是無法找到測試異步ajax響應的方式。 – rajesh

+0

我嘗試了你提到的,但得到了錯誤: 錯誤:callback()方法不存在於file:/// C:/ inetpub/wwwroot/tes tCase/.grunt/grunt-contrib-jasmine/jasmine.js (1) 然後我試着加入window.callback = function(){}; 然後得到這個錯誤。 TypeError:undefined不是一個對象(評估'window.callback.mostRe centCall.args')在file:/// C:/inetpub/wwwroot/testCase/spec/domSpec.js(第50行) 如果你可以嘗試一下,看看它是否適合你,將會非常有幫助。 無論如何,謝謝。 – rajesh

+0

對不起,嘗試新的實現。我錯過了你實際上在回調方法中傳遞 –