2017-05-19 5 views
0

bash에서 단위 테스트를 실행하여 Typescript에서 mocha 및 mocha-jsdom을 사용하여 Javascript 클래스를 생성했는지 테스트하고 싶습니다. 내 테스트에서 dom을 에뮬레이트하고 싶지만 bash에서 단위 테스트를 실행하기 때문에 mocha-jsdom을 사용하고 있습니다.node.js, Mocha 및 mocha-jsdom을 사용하여 Typescript로 생성 된 클래스를 테스트 하시겠습니까?

나는 브라우저에서 모카 용 프론트 엔드 테스트 프레임 워크를 사용하는 몇 가지 예를 보았지만 bash에서 실행 된 곳을 보지 못했습니다.

mocha unit 테스트에서 Typescript로 생성 된 Javascript 클래스를 포함 할 수없는 것으로 보입니다.

var jsdom = require('../../index'); 
require('../../src/js/acct/AccountManager.js'); 

describe('GenerateHTML', function() { 
    describe('#generateHTML()', function() { 

    jsdom() 

    it('should generate a table', function() { 
     var vahm = new VerticalAccountHTMLManager(document, "testId"); 

     expect($("#testId")[0]).eql("table"); 
    }); 
    }); 
}); 

클래스를 생성하는 함수를 bash에서 실행하면서 모카 단위 테스트로 가져 오는 방법이 있습니까?

+0

두 가지 질문 : 왜 TypeScript를 사용 하나 TypeScript 대신 직접 생성 된 JavaScript를 테스트합니까? 그리고 테스트를 실행하기 위해 bash 파일에 의해 트리거 된 nodejs 애플리케이션을 설정하는 것은 어떻습니까? – quirimmo

+0

@quirimmo "TypeScript를 누가 사용하지만 TypeScript 대신 직접 생성 된 Javascript로 테스트합니까?" 나는 그것이 선택 사항이라는 것을 몰랐기 때문에. "테스트를 실행하기 위해 bash 파일 (셸 스크립트)에 의해 트리거 된 노드 js 응용 프로그램을 설정하는 방법은 무엇입니까?" 나는 단지 시험을하고 싶었다. – leeand00

+0

좋은 점 : D 몇 가지 코드와 예제가 유용 할 수있는 답변을 제공합니다. :) – quirimmo

답변

1

그럼 테스트를 실행 해 봅시다.

  • 사용 karma : 테스트를 실행하기위한 당신은 몇 가지 옵션이 있습니다. 카르마는 자바 스크립트 테스트 러너입니다. 실제로 실행하고자하는 모든 테스트 파일을 karma.config.js 내부에 지정하면 모든 테스트가 실행됩니다. 코드를 변경할 때마다 테스트를 실행할 수있는 watch 기능이 있습니다.
  • node.js를 사용하십시오. package.json 파일의 스크립트 속성에서 test 명령을 지정하고 해당 스크립트에 명령을 연결하여 모든 테스트에 대해 모카를 실행합니다. 그런 다음 입력 만하면 테스트를 실행할 수 있습니다. npm test
  • bash를 사용하려면 npm 테스트 명령 또는 karma 명령을 실행하기 위해 bash를 사용하는 것이 좋습니다. 이것이 bash를 통해 테스트 시작에 사용할 수있는 가장 쉬운 방법입니다. 또한 언제든지 npm/karma 명령을 통해 테스트를 실행하는 .bat 파일을 설정할 수 있습니다.
  • 작업 러너를 Gulp, Grunt 등으로 사용하십시오. 테스트를 트리거 한 작업을 지정할 수 있습니다. 예를 들어 명령을 제공하는 작업 gulp mytask

내 제안은 지금 바로 node.js를 사용하는 것입니다. 그것은 일을 더 쉽게 만듭니다.

TypeScript는 TypeScrit와 함께 사용할 수 있으며 JavaScript가 필요하지 않습니다. 저는 여러분에게 모카를 chai, chai-as-promised 및 sinon과 통합 할 것을 제안합니다. 차이는 어설 션 라이브러리입니다. Chai-as-promised는 약속과 사인을 테스트하여 기능과 방법을 테스트 할 수있게합니다.

는 제가 위에서 말한 테스트 명령을 package.json의 예입니다 :이 라인으로

"scripts": { 
    "test": "find ./src -name '*spec.ts' | xargs mocha -r ts-node/register" 
} 

, 당신은 어떤 말 *spec.ts에 대한 모든 파일을 실행합니다.통합하는 방법에 대한

"devDependencies": { 
     "@types/chai": "^3.5.0", 
     "@types/chai-as-promised": "^0.0.30", 
     "@types/mocha": "^2.2.40", 
     "@types/node": "^7.0.12", 
     "@types/sinon": "^2.1.2", 
     "chai": "^3.5.0", 
     "chai-as-promised": "^6.0.0", 
     "husky": "^0.13.3", 
     "mocha": "^3.2.0", 
     "sinon": "^2.1.0", 
     "ts-node": "^3.0.2", 
     "typings": "^2.1.1" 
} 

: 는 TS-노드는 여기 package.json에 유용한 목록을 포함하도록 명령을 통해 직접 종속성에 대한 ts-node myfile.ts

을 TS를 실행할 수있는 매우 유용 노드 플러그인입니다 당신의 검사 결과 내부 모카, 당신이 후두둑으로 사용할 수있는 스펙 파일의 여기 선언 :이 환매 특약을 살펴보고 시도 할 수

// imports of testing libraries 
import * as mocha from 'mocha'; 
import * as chai from 'chai'; 
import * as chaiAsPromised from 'chai-as-promised'; 
import sinon = require('sinon'); 
// import of the source files to be tested 
import Main from './Main'; // an example 

// testing inits 
chai.use(chaiAsPromised); 
const expect = chai.expect; 
const assert = chai.assert; 
const should = chai.should(); 

. TypeScript와 위에서 말한 모든 테스트 라이브러리가 포함 된 정말 간단한 프로젝트가 있습니다. 아직 진행 중이며 아직 끝내야 할 시간이 없으므로 기본 README.md도 업데이트되지 않습니다. 그러나 프로젝트를 복제하거나 소스를 다운로드하는 경우, 당신은 내가 위에서 말한 모든 것들의 진짜 파노라마 당신이 당신의 테스트 내에서 사용할 수있는 모든 방법의 그림 가질 수 있습니다

https://github.com/quirimmo/testing-typescript-mocha-chai-sinon

희망을 이 도움! 모든 쿼리에 대해 알려주세요!