Тестирование встроенной функции обратного вызова с JsTestDriver и Mockjax - PullRequest
1 голос
/ 03 марта 2012

Я хочу проверить следующую функцию 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

1 Ответ

1 голос
/ 04 марта 2012

Я нашел следующее решение

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