TypeScript
단위 테스트
수색…
알사스 사람
Alsatian 은 TypeScript로 작성된 단위 테스트 프레임 워크입니다. Test Cases의 사용을 허용하고 TAP 준수 마크 업을 출력합니다.
그것을 사용하려면 npm
에서 설치하십시오.
npm install alsatian --save-dev
그런 다음 테스트 파일을 설정하십시오.
import { Expect, Test, TestCase } from "alsatian";
import { SomeModule } from "../src/some-module";
export SomeModuleTests {
@Test()
public statusShouldBeTrueByDefault() {
let instance = new SomeModule();
Expect(instance.status).toBe(true);
}
@Test("Name should be null by default")
public nameShouldBeNullByDefault() {
let instance = new SomeModule();
Expect(instance.name).toBe(null);
}
@TestCase("first name")
@TestCase("apples")
public shouldSetNameCorrectly(name: string) {
let instance = new SomeModule();
instance.setName(name);
Expect(instance.name).toBe(name);
}
}
자세한 내용은 alsatian의 GitHub 레포를 참조하십시오.
챠이 불변 플러그인
npm chai, chai-immutable 및 ts-node에서 설치
npm install --save-dev chai chai-immutable ts-node
mocha 및 chai 설치 유형
npm install --save-dev @types/mocha @types/chai
간단한 테스트 파일 작성 :
import {List, Set} from 'immutable'; import * as chai from 'chai'; import * as chaiImmutable from 'chai-immutable'; chai.use(chaiImmutable); describe('chai immutable example', () => { it('example', () => { expect(Set.of(1,2,3)).to.not.be.empty; expect(Set.of(1,2,3)).to.include(2); expect(Set.of(1,2,3)).to.include(5); }) })
콘솔에서 실행하십시오.
mocha --compilers ts:ts-node/register,tsx:ts-node/register 'test/**/*.spec.@(ts|tsx)'
줄자
테이프 는 최소한의 JavaScript 테스트 프레임 워크이므로 TAP 호환 마크 업을 출력합니다.
npm
run 명령을 사용하여 tape
를 설치하려면
npm install --save-dev tape @types/tape
Typescript를 사용하여 tape
를 사용하려면이 실행 명령을 수행하기 위해 전역 패키지로 ts-node
를 설치해야합니다.
npm install -g ts-node
이제 첫 번째 테스트를 작성할 준비가되었습니다.
//math.test.ts
import * as test from "tape";
test("Math test", (t) => {
t.equal(4, 2 + 2);
t.true(5 > 2 + 2);
t.end();
});
시운전 명령을 실행하려면
ts-node node_modules/tape/bin/tape math.test.ts
결과물에서 볼 수 있습니다.
TAP version 13
# Math test
ok 1 should be equal
ok 2 should be truthy
1..2
# tests 2
# pass 2
# ok
잘 했어, 방금 TypeScript 테스트를 실행했다.
여러 개의 테스트 파일 실행
경로 와일드 카드를 사용하여 여러 테스트 파일을 한 번에 실행할 수 있습니다. tests
디렉토리에서 모든 Typescript 테스트를 실행하려면 명령을 실행하십시오.
ts-node node_modules/tape/bin/tape tests/**/*.ts
농담 (ts-jest)
jest 는 고통스럽지 않습니다 페이스 북의 JavaScript 테스트 프레임 워크 인 ts- jest를 사용하여 TypeScript 코드를 테스트 할 수 있습니다.
npm run 명령을 사용하여 jest를 설치하려면
npm install --save-dev jest @types/jest ts-jest typescript
사용의 용이성을 위해 글로벌 패키지로 jest
설치
npm install -g jest
하려면 jest
타이프 라이터와 함께 일을 당신이하는 설정을 추가 할 필요가 package.json
//package.json
{
...
"jest": {
"transform": {
".(ts|tsx)": "<rootDir>/node_modules/ts-jest/preprocessor.js"
},
"testRegex": "(/__tests__/.*|\\.(test|spec))\\.(ts|tsx|js)$",
"moduleFileExtensions": ["ts", "tsx", "js"]
}
}
이제 jest
은 준비되었습니다. 테스트 할 샘플 fizz buz가 있다고 가정합니다.
//fizzBuzz.ts
export function fizzBuzz(n: number): string {
let output = "";
for (let i = 1; i <= n; i++) {
if (i % 5 && i % 3) {
output += i + ' ';
}
if (i % 3 === 0) {
output += 'Fizz ';
}
if (i % 5 === 0) {
output += 'Buzz ';
}
}
return output;
}
예제 테스트는 다음과 같습니다.
//FizzBuzz.test.ts
/// <reference types="jest" />
import {fizzBuzz} from "./fizzBuzz";
test("FizzBuzz test", () =>{
expect(fizzBuzz(2)).toBe("1 2 ");
expect(fizzBuzz(3)).toBe("1 2 Fizz ");
});
테스트 실행을 실행하려면
jest
결과물에서 볼 수 있습니다.
PASS ./fizzBuzz.test.ts
✓ FizzBuzz test (3ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 1.46s, estimated 2s
Ran all test suites.
코드 적용 범위
jest
는 코드 커버리지 보고서 생성을 지원합니다.
TypeScript로 코드 범위를 사용하려면 package.json
다른 구성 줄을 추가해야합니다.
{
...
"jest": {
...
"testResultsProcessor": "<rootDir>/node_modules/ts-jest/coverageprocessor.js"
}
}
적용 범위 보고서 생성을 통해 테스트를 실행하려면
jest --coverage
샘플 fizz 버즈와 함께 사용하면 볼 수 있습니다.
PASS ./fizzBuzz.test.ts
✓ FizzBuzz test (3ms)
-------------|----------|----------|----------|----------|----------------|
File | % Stmts | % Branch | % Funcs | % Lines |Uncovered Lines |
-------------|----------|----------|----------|----------|----------------|
All files | 92.31 | 87.5 | 100 | 91.67 | |
fizzBuzz.ts | 92.31 | 87.5 | 100 | 91.67 | 13 |
-------------|----------|----------|----------|----------|----------------|
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 1.857s
Ran all test suites.
jest
은 또한 coverage/lcov-report/index.html
있는 사용하기 쉬운 html보고를 포함하여 각종 체재에있는 적용보고를, 포함하는 폴더 coverage
을 창조했다