Karma没有在角度超时内调用私有函数

时间:2015-05-05 08:39:43

标签: angularjs unit-testing timeout jasmine karma-jasmine

我有控制器在几秒钟的时间后回调私有功能。控制器工作正常。当我尝试使用带有jasmine框架的karma编写单元测试用例时,它不会在超时内调用我的私有函数。

我使用了timeout.flush(),它在超时内,但没有调用私有函数。下面是我的控制器代码。

var counter = 0;
foo(1000);
function foo(timeout){
     $http({
          method: 'GET',
          timeout : timeout,
          url : "URL to get data"
     }).success(function(res){

     }).error(function(err){
          callinterval(0);
     });
}

function callinterval(code){
     if(counter < 3){
        $timeout(function(){
            foo(5000);
            counter++;
        }, 5000);
     }else{
        $("#errorModal").modal(modalOption);
     }
}

我的业力代码就像这样

it('Test backend connection 505 failure', function() {
    console.log("Test backend connection 505 failure");
    var controller = createController();
    var errorMessage='';

    try {
        // set the HTML response status to 500, service failure
        httpBackend.when('GET','URL to get data')
            .respond(500);

        httpBackend.flush();
        timeout.flush();
    } catch(err) {
        errorMessage = err.message
        console.log(errorMessage);
    }

    expect(errorMessage).toMatch("errorModal");
});

如果我在控制器中使计数器等于3,那么我就能通过这个测试。即,如果计数器等于3,则karma能够在超时时传递函数。如果计数器小于3,则函数foo不调用。

0 个答案:

没有答案