Jest

Jest/TypeScriptに関するPro eggheadレッスン

パーフェクトなテストのソリューションはありません。とはいえ、jestは優れたTypeScriptサポートを提供する素晴らしいユニットテストのオプションです。

注意:単純なノードのpackage.json setupで始めることを前提としています。また、すべてのTypeScriptファイルはsrcフォルダに置かれていなければなりません。このフォルダは、きれいなプロジェクト設定のために(Jestを使わなくても)常に推奨されます。

ステップ1:インストール

npmを使用して次をインストールします。

npm i jest @types/jest ts-jest -D

説明:

  • jestフレームワーク(jest)をインストールします

  • jestの型(@types/jest)をインストールします

  • Jest用のTypeScriptプリプロセッサ(ts-jest)をインストールします。これにより、Jestはその場でTypeScriptをトランスパイルすることができ、source-mapをサポートします

  • これらのすべてを、あなたのdevの依存関係に保存してください(テストはほとんど常にnpmのdev-dependencyです)

ステップ2:Jestを設定する

次のjest.config.jsファイルをプロジェクトのルートに追加します:

module.exports = {
  "roots": [
    "<rootDir>/src"
  ],
  "testMatch": [
    "**/__tests__/**/*.+(ts|tsx|js)",
    "**/?(*.)+(spec|test).+(ts|tsx|js)"
  ],
  "transform": {
    "^.+\\.(ts|tsx)$": "ts-jest"
  },
}

説明:

  • 私達は_すべての_TypeScriptファイルをプロジェクトのsrcフォルダに入れることを常にお勧めします。また、これに倣いroots設定ではsrcフォルダを指定します。

  • testMatch設定は、ts/tsx/jsフォーマットで書かれた.test/.specファイルを発見するためのglobのパターンマッチャーです。

  • transform設定は、ts/tsxファイルに対してts-jestを使うようjestに指示します。

手順3:テストを実行する

あなたのプロジェクトのルートからnpx jestを実行すると、jestはあなたのテストを実行します。

オプション:npmスクリプトのスクリプトターゲットを追加する

package.jsonに追加してください:

  • これにより、簡単なnpm tでテストを実行できます。

  • また、npm t --watchのwatchモードでも。

オプション:watchモードでjestを実行する

  • npx jest --watch

  • foo.tsファイルの場合:

  • 単純なfoo.test.ts

ノート:

  • Jestは、グローバルなtest関数を提供します。

  • Jestには、グローバルなexpectの形でアサーションがあらかじめ組み込まれています。

Example async

Jestには、async/awaitサポートが組み込まれています。例えば:

enzymeの例

enzyme/Jest/TypeScriptのPro eggheadレッスン

enzymeのDOMサポートは、Reactコンポーネントをテストすることができます。enzymeを設定するには3つのステップがあります:

  1. enzyme、enzymeの型、より良いenzymeのスナップショットシリアライザ、あなたのreactバージョンのためのenzyme-adapter-reactをインストールします。npm i enzyme @types/enzyme enzyme-to-json enzyme-adapter-react-16 -D

  2. "snapshotSerializers""setupTestFrameworkScriptFile"jest.config.jsに追加します:

  1. src/setupEnzyme.tsファイルを作成します。

次に、reactコンポーネントとテストの例を示します:

  • checkboxWithLabel.tsx

  • checkboxWithLabel.test.tsx

私たちがjestを好きな理由

これらの機能の詳細についてはjest websiteを参照してください

  • ビルトインのアサーションライブラリ

  • 優れたTypeScriptサポート

  • 非常に信頼できるテストwatcher

  • スナップショットテスト

  • ビルトインのカバレッジレポート

  • ビルトインのasync/awaitサポート

最終更新

役に立ちましたか?