2013-12-20 5 views
2

Файл services.js становится довольно большим, поэтому я решил, что лучше разделить отдельные службы на отдельные файлы (service1.js, service2.js и т. Д.).).Единичные службы AngularJS, которые разбиваются на отдельные файлы

К сожалению, это сломало все мои юнит-тесты. Я больше не могу импортировать зависимостей службы в свои тесты. Я вижу ошибки, как это, когда я запускаю модульные тесты:

Error: [$injector:unpr] Unknown provider: Service1Provider <- Service1 

Я не могу найти какую-либо статьи в Интернете, что адресует эти вопросы. Моя структура приложения довольно стандартная и OOTB, ничего действительно отличная от angular-seed (за исключением, конечно, отдельных файлов для каждой службы).

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

+1

Убедитесь, чтобы добавить ссылку на файлы JS в html. – zsong

+0

спасибо за ответ zsong. мы тестируем единицу в js (подобно тому, как это делается в servicesSpec.js из углового семени) - не используя любые html-файлы ... по крайней мере, о чем я знаю. – mtical

+1

Np. Затем проверьте karma.conf.js, убедитесь, что вы добавили ссылку в этот файл. – zsong

ответ

2

В настоящее время я работаю с @mtical, и, оказывается, ошибка была действительно в karma.conf.js. По его словам, мы разбили наши сервисы на несколько файлов, а наш главный файл службы был назван «service.js». По умолчанию карма загружает все js-файлы, которые явно не указаны в файле karma.conf.js в рекурсивном алфавитном порядке.

Это привело к загрузке нашего файла «service.js» после всех наших других служебных файлов, которые были указаны перед этим файлом в алфавитном порядке. К сожалению, все остальные службы имели «service.js» в качестве зависимости, поэтому, когда наши тесты выполнялись, они не смогли найти нужные нам службы.

Решение было явно перечислить «service.js» перед рекурсивной загрузки других файлов в нашем файле karma.conf.js следующим образом:

... 
files : [ 
     'app/lib/angular/angular.js', 
     'app/lib/angular/angular-*.js', 
     'test/lib/angular/angular-mocks.js', 
     'app/js/services/services.js', 
     'app/js/**/*.js', 
     'test/unit/**/*.js' 
    ], 
... 
Смежные вопросы