我的javascript函数,它进行Ajax调用并将返回的值写入DOM元素 我正在为茉莉花和茉莉花这个函数编写单元测试。我能够使用它来模拟ajax请求。
以下是功能&单元测试
myFunction(){
......
....
$.ajax(){
method: "GET"
url: "/myTest"
success: function(test){
$("#htmlElem").html(test);
}
};
};
it("specifying response when you need it", function() {
expect(jasmine.Ajax.requests.mostRecent().url).toBe("/myTest);
...
jasmine.Ajax.requests.mostRecent().response({
"status": 200,
"contentType": 'text/plain',
"responseText": 'awesome response'
});
myFunction();
var testVal = $("htmlElem").val();
expect(testVal).toBe('awesome response');
});
测试用例失败,显示testVal为空。据我所知,这是因为实际的ajax调用没有执行,所以成功调用也是如此。 我的理解是否正确?如果是这样,那么如何测试ajax调用返回的值是否正确设置为html元素。 提前致谢 任何p
答案 0 :(得分:0)
尝试在原始AJAX调用中添加回调函数,然后在调用完成后使用Jasmine's asynchronous support对其进行测试。
myFunction(done) {
$.ajax(){
method: "GET"
url: "/myTest"
success: function(test){
$("#htmlElem").html(test);
done();
}
};
};
it("specifying response when you need it", function(done) {
// ...
myFunction(function() {
var testVal = $("htmlElem").val();
expect(testVal).toBe('awesome response');
done();
});
});