我正在尝试为具有Ajax调用的javascript文件编写茉莉花单元测试。不知道如何通过茉莉花测试覆盖“成功”功能下的部分。
代码段如下
function getGroups(){
var defer = _$q.defer();
$.ajax( {
url: 'xyz',
data: 'abc',
async: false,
type: 'POST',
dataType: 'xml',
success: function( xml ) {
var groups = [];
groups = xml.getElementsByTagName( 'requiredGroup' );
defer.resolve( groups );
}
} );
return defer.promise;
}
我尝试了以下解决方案,但这未涵盖成功功能下的代码:
describe("getGroups() does ajax call", function() {
beforeEach(function() {
spyOn($, 'ajax');
});
it("call on success", function() {
getGroups();
expect($.ajax).toHaveBeenCalled();
});
});
答案 0 :(得分:0)
您到底要测试什么? ajax调用或成功回调。确保有人测试了它的行为符合预期。
如果要测试成功回调,则可能需要将其提取到某个变量中,然后进行测试:
function getGroups(){
var defer = _$q.defer();
$.ajax( {
url: 'xyz',
data: 'abc',
async: false,
type: 'POST',
dataType: 'xml',
success: function(xml) {
onSuccess(xml, defer);
}
} );
return defer.promise;
}
const onSuccess = function( xml, defer) {
var groups = [];
groups = xml.getElementsByTagName( 'requiredGroup' );
defer.resolve( groups );
}