2016-06-08 2 views
1

Я работаю в приложении angularjs, которое кто-то написал. Я был с одной стороны этого приложения, а другой, добавляя к нему функциональность.Есть ли у меня тестовое приложение для углов?

Я новичок в angularjs, а также новичок в модульном тестировании. Я написал более 50 единичных тестов для этого приложения, и, насколько я могу судить, главное преимущество в этом заключается в нахождении несоответствий в коде и их фиксации, а затем в написании модульного теста.

Моего угловое применение в основном состоит из функций, как это внутри одного контроллера:

$scope.getDataDoSomethingWithIt = function() 
    { 
     var url = $scope.endpoint + "my_hard_coded_url"; 
     methodInAnotherFileThatMakesTheXHRRequest($http, url, "PATCH", mainData.adminToken, mainData.userToken, null, function(response) { 
     if (response.status == 200){ 
      $scope.callSomeOtherMethod(); 
      $scope.addMessage = "Successfully did something."; 
      $scope.isMessage = true; 
     }else{ 

      $scope.addError = "Whoops! There was an error"; 
      $scope.isError = true; 
     } 

     }); 
    }; 

Я в полной растерянности относительно того, как осмысленно написать модульный тест против метода, как это. В основном потому, что $scope.endpoint установлен с $watch, когда mainData.userToken изменен.

Это прекрасный пример того, что один из моих модульных тестов выглядят как сейчас:

describe('getDataDoSomethingWithIt', function() { 
     it('addMessage should not equal null and addError should be empty string.', function() { 
      var controller = $controller('myController', { $scope: $scope }); 
      $scope.getDataDoSomethingWithIt(); 
      expect($scope.addMessage).not.toBe(null); 
      expect($scope.addError).toBe(''); 
     }); 
    }); 

Какую цель это служит? Что делает проверяемое приложение угловой? Если это плохой единичный тест, что будет лучше?

ответ

0

Я прошел долгий путь с этого поста. Конечная точка не устанавливается, не имеет большого значения. Я устанавливаю это по-другому сейчас и в месте, которое используется в приложении.

Что я пытался понять, почему вызовы http не выполняются при запуске тестов на жасмин.

Так что кажется, что любое приложение с угловыми углами может быть проверено. Тем не менее, HTTP-запросы не выполняются дизайном в режиме тестирования. Теперь совершенно ясно, почему это так. Мы не хотим публиковать и помещать данные в api в тестовом режиме. Причина в том, что тестирование пользовательского интерфейса не должно проверять бэкэнд-апи.

Как разработчик, записывающий тест, оператор beforeEach должен использовать $ httpBackend и ngMock для издевательства ответов, ожидаемых от приложения. Тест предназначен для того, чтобы приложение реагировало так, как вы ожидаете.

Смежные вопросы