2015-03-16 4 views
4

Я пишу Jasmine код для тестирования Restangular логики. Я хочу, чтобы проверить, что мой «Foo» object был Restangulraized, так что метод foo.getList() будет вызывать GET /foo и возвращает результат

я мог проверить это двумя способами. Я мог бы добавить .spy на foo.getList() и вернуть его ожидаемым результатам. В качестве альтернативы я могу использовать $HttpBackend.whenGET("/foo") и установить там ожидаемые результаты.

Является ли это одним из предпочтительных?

Я бы предположил, что HTTPBackend будет лучшим вариантом, поскольку он проверяет «позже» в логическом потоке. Если я использовал spy, я не смог бы доказать, например, что мой Restangularize не испортил и пытался решить другой URL-адрес.

Однако, я смотрю унаследованные тесты, и все они используют spy, и поскольку я предполагаю, что человек, который написал этот код, лучше меня (они не могут быть более новичками, а затем меня на Angular), это заставляет меня интересно, есть ли преимущество в использовании spy за $httpBackend.

ответ

6

Когда вы тестируете foo.getList(), используйте httpBackend. После того, как вы проверите функции, которые используют только foo.getList(), используйте шпион. Это самое простое решение, которое позволяет избежать дублирования тестирования.

Обратите внимание, что вы пишите модульные тесты. Каждая единица должна быть независимой от других единиц.

+0

Не могли бы вы объяснить, почему каждый из них более уместен в каждой ситуации? –

+2

@ Sulthan, не могли бы вы рассказать об этом больше для сообщества с примером. Это действительно поможет понять лучше. Большое спасибо – user1807337

3

Позвольте мне посмотреть, могу ли я объяснить, что имел в виду Султан.

Используйте httpBackend для написания модульных тестов, которые проверяют вызовы API REST, чтобы издеваться над API-интерфейсом сервера. В этом случае вы хотите проверить, что API делает правильные вызовы с правильными аргументами и получает правильный ответ, фактически не делая HTTP-запрос, поэтому сервер является черным ящиком.

Используйте шпион для проверки кода, который использует код API на стороне клиента. Например, контроллер будет использовать клиентскую часть Restangular service, которая вызывает API. В этом случае черный ящик является Restangular и заботится только о ожидаемом ответе.

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