unit тестирование angular приложений
Разбираюсь с unit тестами для angular-а. Возникло очень много вопросов, но вот пара основных, которые больше всего не дают покоя, помоги прояснить их, пожалуйста.
1) Например, есть контроллер: angular.module('test', []) .controller( 'test', function($scope) { $scope.testFn1 = function() { ... $scope.testFn2(); ... }; $scope.testFn2 = function() { ... }; } ); Когда тестирую этот контроллер, а именно метод testFn1, нужно ли вешать на метод testFn2 шпиона(spy) и проверять, что при вызове testFn1 внутри был вызван метод testFn2? 2) во многих примерах по unit тестам для angular-а видел, что при тестировании контроллеров, вместо какого-нибудь сервиса делают объект-загрушку, который имеет все теже методы, что и оригинальный сервис, и затем заменяют этот оригинальный сервис на объект-загрушку, то есть, например, вот: angular.module('test', []) .controller( 'test', function($scope, myService) { $scope.testFn1 = function() { ... myService.testFn1(); ... }; } ); а вот тест: var myServiceMock, $scope; myServiceMock = { testFn1 = function() { ... }; }; spyOn(myServiceMock, 'testFn1'); module('test'); inject(function($controller, $rootScope) { $scope = $rootScope.new(); $controller('test', {$scope: $scope, myService: myServiceMock}); }); ... Нужно ли делать со всеми сервисами, которые есть в зависимостях у контроллера(если тестим контроллер), сервиса(если тестим сервис), точно также? То есть нужно ли для всех сервисов, которые есть в зависимостях, делать моки такие, как myServiceMock? 3) Может знаете хороший проект, написанный на ангуларе, где много unit тестов написано, чтобы посмотреть эти тесты, чтобы лучше понимать? 4) Например, есть такой контроллер: angular.module('test', []) .controller( 'test', function($scope, myService1, , myService2, myService3) { $scope.testFn1 = function() { ... myService1.testFn1('hello'); myService2.testFn1('hello'); myService3.testFn1('hello'); $scope.testFn2('hello'); ... }; $scope.testFn2 = function() { ... }; } ); Правильно ли я понимаю, что при тестирование работы метода $scope.testFn1, я обязан проверить, что были вызваны все эти методы: myService1.testFn1('hello'); myService2.testFn1('hello'); myService3.testFn1('hello'); $scope.testFn2('hello'); а также обзан проверить с какими параметрами они были вызваны? Если есть время и желание, то распишите, пожалуйста, поподробнее, спасибо большое. |
Как продвинулось изучение тестирования?
У меня сейчас тоже стоит вопрос мокать все зависимости или нет. Не подскажешь по этому поводу? |
Часовой пояс GMT +3, время: 23:26. |