2017-11-30 1 views
3

Jasmine이나 Mocha와 같은 테스트 프레임 워크를 사용하고 싶습니다. 그러나 그렇게하는 것은 npm을 통해 @types 라이브러리를 추가하는 것을 의미하며, 불행히도 이러한 것들은 전역 네임 스페이스를 오염시킵니다.Typescript + Jasmine/Mocha,하지만 전역 유형이 없습니까?

이것은 응용 프로그램 코드를 작성할 때 intelisense가 테스트 기능을 포함하고 있음을 의미합니다. 이것이 가장 처음 발생한 세계 문제이지만 여전히 나에게 짜증납니다.

*.spec.ts 파일의 맨 위에 라이브러리를 가져올 수 있기를 기대했지만 정의 파일이 모듈을 지원하지 않는 것으로 보입니다.

모듈 내보내기를 사용하는 Tape이라는 또 다른 라이브러리가 발견되었지만, 테스트는 매우 기본적이고 브라우저 UI가 없습니다 (브라우저 콘솔에 나타남).

누구에게 의견이 있습니까?

답변

2

가능한 해결책 중 하나는 응용 프로그램을 컴파일하는 tsconfig.json"types": []을 추가하는 것입니다. 내 프로젝트의 일부는 다음과 같이 구성되어 있습니다 :

  • src 응용 프로그램 코드를 포함하고 응용 프로그램을 컴파일하기위한 tsconfig.json을 가지고,

  • test는 테스트 코드를 포함하고 테스트에 적합한 tsconfig.json 있습니다. 두 파일은 구성을 공유해야하는 경우

, 나는 최상위 두 개의 다른 구성 파일 "extends": "../tsconfig-base"을 통해 확장 tsconfig-base.json 있습니다.

위와 같이 프로젝트를 구성한 경우 src/tsconfig.json"types": []을 추가하면 응용 프로그램 코드에서 Mocha 전역을 숨길 수 있습니다. 일부 프로젝트는 빈 배열 대신 적어도 일부 패키지를 나열해야합니다. 처음에, 나는 "types" 각각의 모든 패키지 내 응용 프로그램 사용에 기재해야 할 것이라고 생각하지만, documentation에 명시된 바와 같이 있기 때문에 그것은 그렇지 않다 :

@types 패키지에 자동으로 포함을 해제 "types": []를 지정합니다.

자동 포함은 전역 선언이있는 파일 (모듈로 선언 된 파일이 아닌)을 사용하는 경우에만 중요합니다. import "foo" 문을 사용하는 경우 TypeScript는 node_modules & node_modules/@types 폴더를 계속보고 foo 패키지를 찾을 수 있습니다.

강조가 추가되었습니다.

중요 사항 : 일부 프로젝트 구조에서는 "types"을 사용하여 문제를 해결할 수 없습니다. 위에서 설명한 것과 다르게 프로젝트 구조가 있습니다. "types"에 적절한 값을 추가하여 응용 프로그램 파일에서 Mocha를 숨길 수 있도록 해당 프로젝트의 빌드 프로세스를 리팩토링해야합니다.

+0

새 프로젝트이므로 제안한대로 구조화 할 수있는 위치에 있습니다.이 대답은 개발 환경의 현재 기능을 고려할 때 가장 좋은 방법으로 보입니다. – Marlon

관련 문제