TypeScript
ユニットテスト
サーチ…
アルザス語
AlsatianはTypeScriptで書かれた単体テストフレームワークです。テストケースの使用を可能にし、 TAP準拠のマークアップを出力します。
それを使用するには、 npm
からインストールし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は無痛です。Facebookによる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
を作成しました