1

我想测试下面的 AJAX 函数

my.var = true;
my.method = function() {
    $.getJSON('/path/to/', 
        function(data){
                my.var = false;
});
}

我应该如何使用 JsTestDriver 来测试 my.var 是否已更改?

AsyncTestCase("MyAsyncTestCase", {

    $.mockjax({
        url: '/path/to/'
    });
    my.method();
});

我尝试不正确地使用 queue.call 方法

4

1 回答 1

1

我找到了以下解决方案

// your code
my.var = true;
my.method = function() {
     return = $.getJSON('/path/to/', 
                  function(data){
                      my.var = false;
              });
}

// test
AsyncTestCase("MyAsyncTestCase", {

    $.mockjax({
        url: '/path/to/',
        responseTime: 100,
        responseText: {
            result: true
        }
    });

    queue.call('Step1: send request and expect a callback', function(callbacks){

        var onComplete = callbacks.add(function(response){
                //console.debug(response);
        });

        // call method
        var jqXHR = my.method();

        jqXHR.complete(function(){
            onComplete(jqXHR.responseText);
        });
    });

    queue.call('Step 2: after ajax call, make assertions', function(){
        // assert variable is false
        assertFalse(my.var);
    });
});
于 2012-03-04T14:30:22.427 回答