2016-06-15 2 views
0

내 Angular2 프로젝트에서 jsfeat 자바 스크립트 라이브러리를 사용합니다.JS 라이브러리 종속성으로 인해 Typescript + Angular2 테스트가 실패했습니다.

나는 나의 .TS 및 .spec.ts 파일의 시작 부분에 놓자 :

declare var jsfeat: any; 

내가 내 index.html을에서 jsfeat.js 포함되어 있습니다.

는 지금은 Angular2 테스트를 실행하려면,하지만 난 얻을 :

ReferenceError: jsfeat is not defined 

테스트 코드는 다음과 같습니다

describe('MyObj instance', function() { 
    it('should instantiate MyObj',() => { 
    expect(new MyObj()).toBeDefined('Whoopie!'); 
    }); 
}); 
+0

런타임 오류인데 타이피 스크립트 오류가 아닌 것처럼 들립니다. –

+0

예, 그렇습니다. jsfeat.js를 가져 오기 위해 테스트 슈트를 말할 수 없습니다. – Admdebian

+0

karma.conf.js에'jsfeat'를 추가해야합니다. –

답변

-1

당신은 그것을 선언했지만 당신이 그것을 정의하지 않은, 당신의 천국을 그것에 가치를 부여하지 않았습니다.

+0

ok, 어떻게해야합니까? 각 jsfeat 메소드 서명을 타이프 스크립트 파일에 복사 하시겠습니까? – Admdebian

+0

당신의 접근 방식이 효과가 있다고 생각하십시오. 그러나 systemJS를 사용하여 타사 라이브러리를 가져올 수 있습니다. 당신이 모듈 로딩을 위해 systemJS를 사용하고 있다고 가정하면 ... jsfeat를 * from 'jsfeat'로부터 import하고 당신의 systemjs 설정 파일에 jsfeat 엔트리를 만든다. 그 라인을 따라 뭔가. systemjs config 항목은 jsfeat가 무엇이고 어디에서 찾을 수 있는지 알려주고 import 문은 모듈 내에서 사용할 수 있도록합니다. 건배 – danday74

0

1)을 설치 JSFEAT WITH NPM) (선택 사항 :

npm install -g jsfeat 

2) 편집 karma.conf.js :

config.set({ 

[...]

files: [ 
    // System.js for module loading 
    'node_modules/systemjs/dist/system.src.js', 

    // Polyfills 
    'node_modules/core-js/client/shim.js', 

    // Reflect and Zone.js 
    'node_modules/reflect-metadata/Reflect.js', 
    'node_modules/zone.js/dist/zone.js', 
    'node_modules/zone.js/dist/jasmine-patch.js', 
    'node_modules/zone.js/dist/async-test.js', 
    'node_modules/zone.js/dist/fake-async-test.js', 

[ ...]

jsfeat :

'node_modules/jsfeat/build/jsfeat.js',