2014-01-22 3 views
1

ngMock은 index.html에 angular-mocks.js를 포함하면 자동으로 자체적으로 포함시키는 마법을 사용합니다.의존성을 지정하지 않고 AngularJS에 모듈을 자동으로로드하는 방법

파일을 포함시키고 모듈 의존성을 편집 할 필요가없는 각도로 테스트 모드에서 모듈을로드하는 가장 간단한 방법은 무엇입니까?

+0

할 수 없습니다. 의존성 트리를 지정해야하기 때문에 모듈 로딩을 자동화 할 방법이 없습니다. Angular-mocks는'ng' 모듈에만 의존합니다. –

+0

NgMock과 ngModule을 모듈 어레이로 이동시키지 않음으로써 ngMock을 통해 이것을 실현했습니다. 그들의 구현은 나에게 매우 깨끗해 보이지는 않지만 (그 프로세스에 대한 많은 지원 코드가있다.) 더 좋은 방법이 있는지 궁금하다. – eddiec

+0

"자동 포함"이란 무엇을 의미합니까? ** [ngMocks] (http://code.angularjs.org/1.2.9/angular-mocks.js) **는 'angular.module ('ngMock ', ['ng ']) ...'을 사용하여로드합니다. 그 자체. – gkalpak

답변

2

모듈을로드하는 유일한 방법은 angular.module(...)입니다. 호출하여 ngMocks 부하는 "그 자체"

angular.module('ngMock', ['ng']).provider(...).config(...); 

당신은 그것을로드 종속성으로 모듈을 선언 할 필요가 없습니다. 스크립트에 angular.module('<moduleName>', [<moduleDependencies>...]);을 포함하면됩니다. ngMocks 그것은 종속성 목록을 받아 'ngMock'를 앞에 추가하도록 사용자 정의 인젝터를 만들기 때문에


ngMock이 자동적으로 window.module 또는 angular.mock.module를 사용하여로드 된 모듈의 의존성 목록에 추가하는 방법 "을 의미하는 경우, 그것은이다 :

window.inject = angular.mock.inject = function() { 
    ... 
    return isSpecRunning() ? workFn() : workFn; 
    ... 
    function workFn() { 
    var modules = currentSpec.$modules || []; 

    modules.unshift('ngMock'); // <-- this line does the trick 
    modules.unshift('ng'); 
    ... 

당신은 인스턴스화 전에 종속성 목록에서 모듈을 앞에 추가하는 함수를 직접 만들 수 있습니다,하지만 난 거의 티 믿을 테스트에 도움이 될 것입니다. 반대로, 오류의 원인이 하나 더 있습니다 (종속성 오류를 "숨기는"가능성이 있음).

+0

관심있는 두 번째 부분입니다.이 작업을 수행 할 수있는 우아한 방법이 있는지 궁금합니다. – eddiec

+0

정확히 달성하려는 것은 무엇입니까? 왜 몇 번의 키 누름을 저장하기 위해 테스트를 쉽게 수행 할 수 있고 오류가 발생하기 쉬운가? – gkalpak