2016-09-13 2 views
1

Angular 1.5, TSify 및 Karma를 사용하는 테스트를 설정하려고합니다. https://github.com/cmlenz/tsify-testAngular, Karma, tsify, woes

(이 예는 각도 포함되지 않습니다) : 나는 아주 가까이 해요,하지만 난 꽤 괜찮 없어 문제로 실행 해요 : 나는 여기에 설명 된 설정을 다음있어

각도 모의에서 오류가 발생했습니다. "정의되지 않은 속성 모의 '를 설정할 수 없습니다.

타이밍 문제이거나 범위가 있어야합니다. 각도 변수의 범위를 감싸고, mock은 그것을 볼 수 없습니다. 몰라. 여기

내 karma.conf.js 파일의 관련 부분입니다 : 이것은 모의 객체를로드하고있어 길을 함께 할 수있는 뭔가가 있어야합니다

frameworks: ['browserify', 'jasmine'], 

    files: [ 
     'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js', 
     './node_modules/angular-mocks/angular-mocks.js', 
     './modules/**/*.spec.ts' 
    ], 

    exclude: [], 

    preprocessors: { 
     '**/*.ts': 'browserify' 
    }, 

    browserify: { 
     debug: true, 
     plugin: [ 
      ['tsify'] 
     ] 
    }, 

- 그것은 단지 내 각 응용 프로그램에서 사용하지 않는 것 테스트, 그래서 그것과 관련이 있어야합니다.

힌트가 있습니까? 그것은 당신의 .spec.ts 파일 중 하나가 종속 된시 .ts 파일 중 하나에 필요한 때까지 angular로드되지 않는 -

+1

'파일'배열에는 ** 모든 ** 테스트에 필요한 파일이 포함되어야합니다. 'angular.js'와 응용 프로그램 파일은 어디에 있습니까? – Phil

+1

구성에 따라 '앵귤러 모크 (angular-mocks)'가 NPM과 함께 설치 되었음이 분명합니다. 'angular'가 NPM과 함께 설치되었고'.ts' 파일에서'require '를 통해 번들에 포함되는 경우'angular-mocks '가'angular '이후에로드되어야하기 때문에 문제가 될 수 있습니다. – cartant

+0

@Phil Browserify는 모든 파일 (공급 업체 파일 포함)을 단일 번들로 연결합니다. 내가 일하는 예제에서, 그들은 **/*. ts glob을 프리 프로세서 섹션에 등록했습니다. 그것이 옳지 않다면, 나는 그것을 바꿀 수있다. 그것은 무엇이어야 하는가? (나는 각 벤더 파일을 가리킬 필요가 없다고 가정하고있다. 왜냐하면 browserify는 그것들을 번들에 넣기 때문이다.) – JMarsch

답변

1

angular-mocks 요구는 그 일이 아니에요, angular 후 현재 카르마 configuarion로드합니다.

하나 개의 솔루션은 angularangular-mocks을 필요로하고 해당 파일이 카르마의 files 구성에서 .spec.ts 파일 앞에 확인하기 위해 추가 파일을 추가하는 것입니다.

require('angular'); 
require('angular-mocks'); 

및 ((가) angular-mocksnode_modules하에 교체) 카르마 구성에 추가 될 수있다 :

은, 예를 들면 require-angular-mocks.js라는 파일이 생성 될 수

files: [ 
    'https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js', 
    './require-angular-mocks.js', 
    './modules/**/*.spec.ts' 
], 

preprocessors: { 
    '**/*.js': 'browserify', 
    '**/*.ts': 'browserify' 
}, 

angular 보장해야 및 angular-mocks 올바른 순서로로드되고 사양 전에로드됩니다. 파일이 .js 인 경우 Karma의 preprocessors 구성에 다른 항목이 필요합니다.

+0

해고당한 일이 생겨서이 일을 시도했습니다. 그것은 효과가있다! 멋 졌어요! 도와 줘서 고마워. 나는 카르마 파이프 라인이 어떻게 작동하는지 더 알고 싶습니다. 그 일에 대한 글을 알고 있습니까? – JMarsch

+0

불행히도, 아니, 나는 카르마에 대한 유용한 글을 모른다. 내 이해가 점차적으로 [구성 문서화] (http://karma-runner.github.io/1.0/config/configuration-file.html)를 읽음으로써 점차적으로 해결되었다고 생각합니다. ['files'] (http://karma-runner.github.io/1.0/config/files.html) 설정은 그 핵심입니다. Karma는이를 사용하여 HTML 파일을 빌드합니다. Browserify는'files '의'.js' 항목을'