2014-11-28 2 views
1

templateURL을 사용하여 unit test 지시문에 몇 가지 문제가 있습니다. 나는 karma-ng-html2js-preprocessor를 사용하고 있으며 그것에 관한 여러 지침을 읽었습니다. preproccsors, stripprefix 등을 추가했습니다. 여러 번 지나쳐서 잘못해서는 안됩니다.templateUrl을 사용한 각도 지시문 테스트, 모듈 인스턴스화 실패

beforeEach(module('template/input-with-units/input-with-units.html')); 

내가 오류 내가 테스트가 실행할 때 :

Failed to instantiate module template/input-with-units/input-with-units.html 

나는 몇 가지 모든 경로를 확인했지만 몇 가지 가이드에 작성된

내 테스트에서 내가이 줄을 추가 타임스. 잘못된 건 없다. 이것을 디버그하는 영리한 방법이 있습니까?

+0

'module()'함수는'templateUrl'이 아닌 정의 된 모듈 **의 이름 만 허용한다는 것을 알고 있습니다. 당신이 읽고있는 가이드가 무엇이든간에 그것은 틀 렸습니다. – ryeballar

+0

@ryeballar karma-ng-html2js-preprocessor는 html 파일을 js 문자열로 변환하고 각도 모듈을 생성합니다. – Per

답변

0

나는이 질문이 오래되었다는 것을 알고 있지만 다른 사람이 우연히 만났을 때 대답 할 것입니다.

ngHtml2JsPreprocessor: { 
    // ... 
    // Other settings here 
    // ... 
    moduleName: 'myHtmlTemplates' 
} 

을 다음 그러나

beforeEach(module('myHtmlTemplates')); 

를 사용하여 다음과 같이이 문제를 해결하기 위해

한 가지 방법은, karma.conf.js의 ngHtml2JsPreprocessor 객체에 몇 가지 고유 한 문자열로 moduleName을 할당하는 것입니다 경로가 재스민에서 어떻게 해석되는지에 대한 문제가있는 것처럼 들리므로 나중에 $ templateCache가 템플릿을 찾지 못하는 등의 다른 문제로 뒤죽박죽이 될 수 있습니다. 이 경우 cacheIdFromPath (ngHtml2JsPreprocessor에도 있음) 내에 process.emitWarning(filepath)을 호출하여 생성 된 경로를 디버깅하고 원하는대로 수정할 수 있습니다. karma.conf.jsfrontend.tests을 장소라는 하였다 내 테스트 폴더 반면, ../frontend/views/**/*.html :

개인적으로, 나는 같은 상위 폴더에서 다른 폴더 내, HTML 파일을 넣어 때문에 절대 경로에 문제가 생산되고 있었다. 이 두 점은 운명이 절대 경로를 만들게했습니다. 나는 카르마 설정 파일에 basePath : '..'을 설정하여 이것을 해결했다.

또한 대/소문자 구분이 $templateCache 인 경우주의하십시오. 코드에서 잘못된 대소 문자를 사용하여 GET 요청을하면 $templateCache에서 찾을 수 없으므로 $httpBackend은 해당 요청을 기대하지 않는다고 알립니다.

관련 문제