サーチ…


アルザス語

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リポジトリを参照してください。

チャイ不変プラグイン

  1. npm chai、chai-immutable、およびts-nodeからインストールする

    npm install --save-dev chai chai-immutable ts-node
    
  1. mochaとchaiのインストールタイプ

    npm install --save-dev @types/mocha @types/chai
    
  2. シンプルなテストファイルを書く:

      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);
        })
      })
    
  3. それをコンソールで実行します。

    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.

jestcoverage/lcov-report/index.htmlユーザーフレンドリーなhtmlレポートを含む様々なフォーマットのカバレッジレポートを含むフォルダcoverageを作成しました

jest htmlレポート



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow