1

Я пытаюсь написать тестовый пример, если условия внутри цикла, однако я не имею его как часть фильтра. Есть ли способ проверить условия if в цикле. Мой тестовый пример вообще не выполняет эту строку кода.Единица Test case в Jasmine

Ниже мой код контроллера

$scope.init = function() 
    { 
for (var i = 0; i < $scope.tempdata.length; i++) { //mapping of the status to text 

      if ($scope.tempdata[i].Status == 'U') { 
        $scope.statusText = 'text1'; 

       } 
       if ($scope.tempdata[i].Status == 'A' || $scope.tempdata[i].Status == 'W') { 
        $scope.statusText = 'text2'; 
       } 
       if ($scope.tempdata[i].Status == 'F') { 
        $scope.statusText = 'text3'; 
       } 
       if ($scope.tempdata[i].Status == 'P') { 
        $scope.statusText = 'text4'; 
       } 
       if ($scope.tempdata[i].Status == 'E') { 
        $scope.statusText = 'text5'; 
       } 
       if ($scope.tempdata[i].Status == 'S') { 
        $scope.statusText = 'text6'; 
       } 
        } 
      } 

Ниже мой тест

it('should set the status', function() { 
    scope.responseSet = true; 
    var mockTempData =[{'Status': 'F'}]; 
    scope.tempdata = mockTempData 
    scope.init(); 
    expect(scope.statusText).toBe(text3); 
}); 

Когда я запускаю карму мой тест терпит неудачу с ожидаемым «» быть text3.

+0

Переключатель ($ scope.tempdata [i] .Status) 'будет выглядеть более аккуратно. Кроме того, не должен ли ваш тест «ожидать» (scope.statusText) .toEqual ('text3') '(как в строке« text3 »)? – Phil

+0

Кажется, здесь нормально работать ~ http://plnkr.co/edit/4t8W9APotPwcvzvvuPxQ?p=preview – Phil

ответ

2

Было бы проще сказать, показываете ли вы, как вы «впрыскиваете» область в свой тест контроллера. Тем не менее, мне очень полезно отлаживать мои модульные тесты, чтобы тщательно пройти через них и убедиться, что все так, как я ожидаю, каждый шаг на этом пути.

Вы также должны иметь ваша последняя линия будет

expect(scope.statusText).toBe('text3'); 

Обратите внимание, что text3 в тестовом коде должен быть изменен на «Text3», поскольку это строка в Вашем контроллере, а не имя переменной.