2016-05-17 2 views
0

Я пытаюсь написать тест для углового контроллера, который берет $ route как инъекционную. Внутри контроллера он ссылается на этот объект в разных местах, например. $route.current.params

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

До сих пор все, что я могу придумать, это вручную издеваться над сервисом $ route, но это похоже на большую работу, которая должна была быть выполнена раньше. Беда в том, что я не могу найти примеров. Самое близкое, что я могу найти, это «Injected $stateParams and $state into jasmine angular js test getting undefined», но это не совсем моя ситуация.

Я могу ввести курсом $ route, но он не будет иметь никаких конкретных свойств набора маршрутов. Каков общепринятый способ приблизиться к этому?

ответ

0

Если это не протестированный модуль ngRoute (что маловероятно), его услуги должны быть издевательствами в модульных тестах, чтобы уменьшить количество движущихся частей.

$routeParams услуга может быть рекомендована для его лаконичности в качестве прямой замены $route.current.params, за редким исключением упомянутого в the manual:

Обратите внимание, что $ routeParams обновляются только после изменения маршрута завершается успешно. Это означает, что вы не можете полагаться на $ routeParams, правильные в функции разрешения маршрута. Вместо этого вы можете использовать $ route.current.params для доступа к параметрам нового маршрута.