2013-12-20 3 views
2

내 services.js 파일이 상당히 커지면서 개별 서비스를 개별 파일 (service1.js, service2.js 등)로 분리하는 것이 가장 좋을 것이라고 판단했습니다.).AngularJS 단위 테스트 서비스가 별도의 파일로 나뉘어졌습니다.

불행히도, 이것은 모든 단위 테스트를 망쳤습니다. 더 이상 서비스 종속성을 테스트에 가져올 수 없습니다. 단위 테스트를 실행하면 다음과 같은 오류가 표시됩니다.

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

이 문제를 해결하는 웹 문서는 찾을 수 없습니다. 내 응용 프로그램 구조는 꽤 표준이고 OOTB, 실제로는 angular-seed과 다릅니다 (물론 각 서비스에 대한 별도의 파일 제외).

자세한 정보가 필요하면 알려주십시오.

+1

JS 파일에 대한 참조를 추가해야합니다 :

다음과 같은 솔루션은 명시 적으로 우리의 karma.conf.js 파일에 다른 파일의 재귀 로딩 전에 "service.js"를 나열 할 수 있었다 html로. – zsong

+0

응답 zsong 주셔서 감사합니다. 우리는 js 내에서 단위 테스트를하고 있습니다 (angle-seed에서 servicesSpec.js를 실행 한 것과 비슷합니다). 적어도 html 파일을 사용하지는 않습니다 ... 적어도 알고 있습니다. – mtical

+1

Np. 그런 다음 karma.conf.js를 확인하고이 파일에 참조를 추가하십시오. – zsong

답변

2

나는 @mtical과 함께 일하고 있으며, 실제로 karma.conf.js에 오류가 있음이 밝혀졌습니다. 그가 말했듯이, 우리는 우리의 서비스를 여러 개의 파일로 나누었으며, 주 서비스 파일의 이름은 "service.js"였습니다. 기본적으로 karma는 karma.conf.js 파일에 명시 적으로 나열되지 않은 모든 js 파일을 재귀 알파벳 순으로로드합니다.

이로 인해 우리의 "service.js"파일은 알파벳순으로 나열된 다른 모든 서비스 파일 다음에로드되었습니다. 불행히도 이러한 다른 모든 서비스에는 종속성으로 "service.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' 
    ], 
... 
관련 문제