#angularjs #karma-runner #angular-ui-bootstrap #karma-jasmine
#angularjs #карма-бегун #angular-ui-bootstrap #карма-жасмин
Вопрос:
При запуске модульных тестов Karma я сталкиваюсь со следующей ошибкой:
Error: [$injector:unpr] Unknown provider: $attrsProvider <- $attrs
http://errors.angularjs.org/1.2.16/$injector/unpr?p0=$attrsProvider <- $attrs
at /home/ubuntu/vantage/core/static/core/js/lib/angular.js:78:12
at /home/ubuntu/vantage/core/static/core/js/lib/angular.js:3705:19
at Object.getService [as get] (/home/ubuntu/vantage/core/static/core/js/lib/angular.js:3832:39)
at /home/ubuntu/vantage/core/static/core/js/lib/angular.js:3710:45
at getService (/home/ubuntu/vantage/core/static/core/js/lib/angular.js:3832:39)
at invoke (/home/ubuntu/vantage/core/static/core/js/lib/angular.js:3859:13)
at Object.instantiate (/home/ubuntu/vantage/core/static/core/js/lib/angular.js:3880:23)
at /home/ubuntu/vantage/core/static/core/js/lib/angular.js:7134:28
at null.<anonymous> (/home/ubuntu/vantage/ecommerce/js_tests/unit/progress/progressControllersSpec.js:12:20)
at Object.invoke (/home/ubuntu/vantage/core/static/core/js/lib/angular.js:3869:17)
Error: Declaration Location
at window.inject.angular.mock.inject (/home/ubuntu/vantage/core/static/core/js/lib/angular-mocks.js:2132:25)
at null.<anonymous> (/home/ubuntu/vantage/ecommerce/js_tests/unit/progress/progressControllersSpec.js:10:20)
at null.<anonymous> (/home/ubuntu/vantage/ecommerce/js_tests/unit/progress/progressControllersSpec.js:5:5)
at /home/ubuntu/vantage/ecommerce/js_tests/unit/progress/progressControllersSpec.js:3:1
TypeError: Cannot call method 'expectGET' of undefined
at null.<anonymous> (/home/ubuntu/vantage/ecommerce/js_tests/unit/progress/progressControllersSpec.js:380:18)
Chrome 33.0.1750 (Linux): Executed 42 of 45 (1 FAILED) (0 secs / 0.483 secs)
Chrome 33.0.1750 (Linux) Unit Test: ProgressController ProgressController should expect showDetailedSection to be false on initialization FAILED
Error: [$injector:unpr] Unknown provider: $attrsProvider <- $attrs
Кто-нибудь знает, что это значит и как это исправить?
Спасибо 🙂
Комментарии:
1. Пожалуйста, покажите код для неработающего теста
2. В конечном счете вы используете
$attrs
свой контроллер, но не предоставляете его в своих тестах3. Этот тест проходил нормально, пока мы не добавили ui.bootstrap в качестве зависимости модуля, и теперь мы получаем это. Нигде в нашем контроллере нет явной ссылки на $ attrs. Похоже, что из-за дополнительной зависимости ни одна из служб не внедряется в тест.
Ответ №1:
Решение этой проблемы оказалось довольно неясным.
Проблема заключалась в том, что пакет bootstrap-ui на самом деле содержит ProgressController
в себе. Итак, наш контроллер был затоптан. Тест пытался создать наш экземпляр ProgressController
, но в итоге получил экземпляр из bootstrap-ui.
Простое переименование нашего контроллера все исправило.