简体   繁体   English

qunit jquery ajax测试,用于始终完成的回调

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM