2016-07-24 13 views
0

Typescript에서 애완 동물 프로젝트의 단위 테스트를 설정하는 데 어려움을 겪고 있습니다.Typescript : unit tests and dependencies

class Point { 
    constructor(public x: number, public y: number) { 
    } 
} 
export { Point }; 

unittest.ts

import Point from "../main"; 

function basicTest() { 
    let Point = new Point(10, 15); 
    // ... 
} 

basicTest(); 

unittest.html

:

/src 
    /test 
     unittest.ts 
     unittest.html 
    main.ts 

main.ts 디렉토리 구조 다음

고려 컴파일이 코드 tsc src/test/unittest.ts && open src/test/unittests.html

후 나는 오류 ReferenceError: require is not defined 다음을 참조

.

나는 unittest.html에 requirejs를 추가하려고 시도했으나 다소 모호한 오류가 발생합니다. 또한 컴파일 중에 --module system--module amd을 사용하려고 시도했지만 성공하지 못했습니다.

종속성을 놓쳤습니까?

감사합니다. 테스트에서 수입 라인은 무엇인가 등을 아래로 컴파일 할 것이다

답변

0

보인다 그것은 플러그인 tsify입니다 :

browserify src/test/unittest.ts -p [ tsify --debug ] > src/test/unittest.js 
2

...

var foo_1 = require("./foo"); 

서술문을 구성해야하는 필요합니다. Javascript에는 모듈을 즉시로드 할 수있는 지원 기능이 제공되지 않습니다. 할 수있는 몇 가지 다른 방법이 있습니다. 그들은 "어떻게 모듈이 모듈을 요청하고로드 할 수 있는지"에 대한 모든 접근 방식이 다릅니다. 난 당신이 자바 스크립트의 다양한 모듈 확인 메커니즘에 대한 몇 가지 연구를 할 드리겠습니다하지만 네 가지 방법이 있습니다 :

  • CommonJS는 (기존 노드/백엔드 메커니즘)
  • AMD (기존 브라우저/프론트 엔드 메커니즘)
  • 글로벌 (가장 오래된 브라우저 접근 방식, require을 사용하지 않고 <script> 태그로 HTML의 종속 라이브러리를 참조)
  • ES2015 (이러한 모든 접근 방식을 통합하기위한 새로운 메커니즘).

새로운 프로젝트 인 경우 ES2015 스타일을 지원하는 도구가 필요할 수 있습니다. RequireJS는 AMD 모듈 로딩을 지원하는 도구입니다. 당신은 Webpack이나 SystemJS를 들여다 볼 수 있습니다. 나는 주로 SystemJS에서 일한다. 보통 SystemJS를 손으로 구성하고 싶지는 않지만 jspm을 사용하는 것이 좋습니다. 시작 가이드 here을 찾을 수 있습니다.

Webpack을보고 싶다면 here을 시작할 수 있습니다.이 경우 종속성을 해결하는 가장 쉬운 방법은 browserify를 사용하고 있음을

+0

가장 쉬운 방법은 무엇입니까? 단위 테스트를 많이 할 계획이 아니므로 설정하는 데 너무 많은 시간을 소비하고 싶지 않습니다. – mdrndv

+0

이것은 단원 테스트와 응용 프로그램 사용에 대한 정보가 적습니다. main.ts가 다른 라이브러리를 가져올 수 있습니까? 그렇다면 무언가를 알아 내야 할 것입니다. 나는 webpack을 사용하지 않았으므로 그 말을 할 수 없습니다. jspm을 시작하는 것은 그리 오래 걸리지 않으며 일단 시작하면 재구성하고 다시 시작하기가 아주 쉽습니다. – Pace

+0

고마워요! 나는 외부 라이브러리를 사용할 계획이 없다. (나는 조직을 유지하기 위해'npm'을 사용한다.) 그리고 가능한 한 깨끗하고 최소한으로 프로젝트를 유지하려고한다. 프로젝트를 모듈화하는 데 필요한 기계가 필요합니다. – mdrndv

관련 문제