2012-03-03 49 views
1

我想測試下AJAX功能與JsTestDriver和Mockjax

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方法unseccessfully

回答

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); 
    }); 
});