[英]qunit jquery ajax test, for always and done callbacks
I am trying to test jquery ajax request 我正在尝试测试jquery ajax请求
Widget.seriesEditLoadSeriesAjax = function( id , jqXHRCallbacks ) {
var ajax_url = '/dashboard/charts/ajax/2';
var data_obj = {
SID : id || 0 ,
getSeries : true
};
var jqxhr = $.ajax({
url : ajax_url,
type : "GET",
data : data_obj
});
jqXHRCallbacks = jqXHRCallbacks || {
done : Widget.seriesEditLoadSeriesCallback ,
always : function(){
$('#series_loader').hide();
}
};
jQuery.extend( jqxhr, jqXHRCallbacks );
console.log( 'jqxhr.always', jqxhr.always );
console.log( 'jqxhr.done', jqxhr.done );
}
and written a test for it, using qUnit library 并使用qUnit库为此编写了一个测试
test( "Widget.seriesEditLoadSeriesAjax", function() {
stop();
Widget.seriesEditLoadSeriesAjax( 67,{
done : function(){
ok( true, "asynchronous Success !");
start();
} ,
always : function(){
ok(true, "asynchronous completed PASS!");
start();
}
});
});
But it always return result 但是它总是返回结果
asynchronous completed PASS!
Why it omitting test for done
. 为什么它省略测试
done
。 Please help ! 请帮忙 !
modified function to 修改功能
Widget.seriesEditLoadSeriesAjax = function( id , callbacks ) {
var ajax_url = '/dashboard/charts/ajax/2';
var data_obj = {
SID : id || 0 ,
getSeries : true
};
var ajaxSettings = {
url : ajax_url,
type : "GET",
data : data_obj ,
success : Widget.seriesEditLoadSeriesCallback ,
complete : function(){
$('#series_loader').hide();
},
error : function(){
}
};
jQuery.extend( ajaxSettings, callbacks );
var jqxhr = $.ajax( ajaxSettings );
}
and test code changed into 并将测试代码更改为
test( "Widget.seriesEditLoadSeriesAjax", function() {
stop();
Widget.seriesEditLoadSeriesAjax( 67,{
success : function( response ){
ok( true, "asynchronous Success !");
} ,
complete : function(){
ok(true, "asynchronous completed PASS!");
start();
}
});
});
it worked ! 有效 !
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.