У меня прилично большое количество базовых услуг, большинство из которых определяются точно так же:Как я могу протестировать базовые службы на основе ngResource?
app.factory('Group',['$resource',function (resource) {
return resource('/api/group/:group', {group:'@id'},{});
}]);
И так далее. Очень немногие немного отличаются друг от друга и имеют либо уникальные свойства, например. User
может также иметь активацию:
app.factory('User',['$resource',function (resource) {
return resource('/api/user/:user', {user:'@id'},{
activate: {method:'PUT', url:'/api/activate/:user'}
});
}]);
Или заставить некоторые ожидаемый ответ, например, GET
может дать массив:
app.factory('GroupMembers',['$resource',function (resource) {
return resource('/api/group/:group/members', {group:'@id'},{
get: {method:"get",isArray:true}
});
}]);
Я ищу здравый путь модульного тестирование этих. Похоже, что использование $httpBackend
для захвата всех запросов - это чересчур избыток, но укупорка в $resource
может быть недооценена. Будет ли мне лучше обслуживать любой из этих подходов? Или, возможно, какой-либо набор функций тестов, который выполняет все команды get/put/post/patch/delete/query и переопределяет для конкретных случаев, таких как добавленный activate
для User
или специальный get
для GroupMembers
?
Hello @deitch. Я думаю, вам нужно будет тестировать свои контроллеры и другие службы в зависимости от ресурсов. ИМО не имеет смысла испытывать такие сервисы, как служба группы, поскольку это в основном тестирование рамки, которую вы не хотите делать. Если вы тестируете более высокоуровневые сервисы, я думаю, что вы можете просто издеваться над этим ресурсом, но я не уверен, что это лучший подход. Вот почему я не пишу ответа :). –
@MiroslavNedyalkov Вы должны сказать это как ответ. Услуги, основанные на $ ресурсах в этом вопросе, не нуждаются в проверке, по какой именно причине вы даете. Я обычно создаю простой mock-ресурс, и в своем модульном тесте для контроллеров я использую spyOn() для проверки правильности использования ресурса $. –
@SunilD. что вы имеете в виду? Я понимаю, что вам не нужно тестировать '$ resource' - просто доверяйте фреймворку и его тесты, но как насчет остальных? Вы используете тесты контроллера для использования ресурсов? – deitch