Итак, я и моя команда создаем веб-приложение, и мы делаем это:
Так что я должен на самом деле проверить?
Большинство функций контроллера в angularJS извлекают данные и присваивают их $ scope, так стоит ли эти функции проводить модульное тестирование?
Пример метода контроллера:
UnidadesOrganicasService.getUnidadesOrganicas().then(function (unidadesOrganicas) {
$scope.unidadesOrganicas = unidadesOrganicas;
}, function errorCallback() {
$scope.showToastError('Occorreu um erro a carregar as unidades orgânicas!');
});
Другие методы делают в основном то же самое с некоторыми if, которые зависят от данных, поступающих из API.
метод обслуживания:
this.getUnidadesOrganicas = function () {
return Restangular.all("unidades-organicas").getList({"sort": "acronimo"});
};
Таким образом, тест будет выглядеть так:
expect($scope.something).toEqual(MockedSomething);
и http макет будет просто так: $httpBackend.expectGET('/something').respond(MockedSomething);
Я знаю, что тесты E2E для пользовательского интерфейса очень важны, но в этом случае стоит ли проводить модульные тесты для таких методов? Или я должен просто проверить действительно важные методы, такие как методы исчисления и подобные методы?
С другой стороны, в API большинство функций не имеет отношения к проведению интеграционных тестов, а модульные тесты кажутся гораздо более важными.
Мой реальный вопрос: правильно ли я думаю и какая-то ориентация на то, что тестировать в этом случае
РЕДАКТИРОВАТЬ 1:
Другой вопрос: в моем случае (я тестирую по коду, а не по разработке, управляемой тестами), я должен тестировать только после завершения работы контроллера (делать то, что он должен делать, но может быть немного изменен), верно?
Это всегда зависит от бюджета и сложности проекта. Во-первых, это ваш собственный опыт работы с проектом, который может сказать вам, где вы можете получить дешевую цену и где отсутствие тестового покрытия обойдется вам в деньги и заставит вас порвать волосы.
Кредиты Angular за реальное тестирование модулей контроллера, но чаще всего я пропускаю его и оставляю его на e2e, это особенно верно, если держать контроллеры тонкими.
Если вы действительно уверены в своем бэкэнд-тестировании, вы можете пропустить $httpBackend
и получить еще один шаг в цепочке обещаний, если дизайн сервиса это позволяет, это нежелательный, но выполнимый сценарий.
Других решений пока нет …