2017-01-17 4 views
1

Как заставить Jasmine ждать, пока асинхронные функции закончатся, прежде чем запускать ожидание?Жасмин-модульный тест ждет асинхронных вызовов

Я хочу проверить scope.init() в моем контроллере. Эта функция содержит 3 асинхронных вызовов, подобное этому

$scope.init = function() { 

    //populate parameterList 

    myService.getDropdowns(parameterList).then(function(response) { 
     if (response && response.data) { 
      $scope.dropdown1 = response.data; 
     } 

    }, function(errorResponse) { 
     $log.error(errorResponse); 
    }); 

    //populate parameterList 

    myService.getDropdowns(parameterList).then(function(response) { 
     if (response && response.data) { 
      $scope.dropdown2 = response.data; 
     } 

    }, function(errorResponse) { 
     $log.error(errorResponse); 
    }); 

}; 

Как я могу ждать dropdown1, dropdown2, dropdown3 заселяться перед запуском мои ожидать годов? Я пытаюсь проверить, что каждый раскрывающийся список заполнен успешно.

ответ

0

Вы можете сделать это следующим образом:

describe('your test', function(){ 

    beforeEach(function(done){ 
     // You can call any async task, when done() is called the test will begin 
     setTimeout(() => {done();}, 100); 
    }); 

    it('Column Definitions created', function(){ 
     expect($scope.a).toBe(3); 
    }); 
}); 
Смежные вопросы