Не уверен, что означает неизвестный поставщик: $ attrsProvider <- $ attrs?

#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.

Простое переименование нашего контроллера все исправило.