我是茉莉花的新手。 我正在寻找一种方法来检查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 :(得分:0)
拉杰什,
您已经使用模拟删除了实际的ajax调用。您是否希望测试针对numSearches的模拟响应?
在您的成功通话中,您没有将json响应res
传递给您的回调方法。
这是一篇很好的文章来测试Jasmine中的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
作为参数添加到您的回调方法