web-dev-qa-db-ja.com

.tsファイル(TypeScript)を使用してJestグローバルテストセットアップを構成する

私はts-jest(JestおよびTypeScript)を使用しており、すべてのテストスイートに対してグローバルなセットアップを構成したい(テストデータベースを初期化する)。

Jest構成にはglobalSetupオプションがあることがわかりました。

"jest": {
    "globalSetup": "./jest-config.js"
}

ただし、セットアップには.jsファイルのみを使用できます。 .tsファイルを使用したいのは、TypeScriptでのセットアップ用のコードを含むすべてのコードが含まれているためです。

どうすればこれを達成できますか?

12

私は解決策を見つけました。

私の最初のプロジェクト構造は次のとおりです。

_.
|--src
|  |--service.ts
|--tests
|  |--service.test.ts
|--dist
|--tsconfig.json 
|--package.json
_

Package.jsonのJest設定:

_"jest": {
  "globals": {
    "ts-jest": {
      "tsConfigFile": "tsconfig.json"
    }
  },
  "moduleFileExtensions": ["ts","js"],
  "transform": {
    "^.+\\.(ts|tsx)$": "./node_modules/ts-jest/preprocessor.js"
  },
  "testMatch": [
    "**/tests/**/*.test.(ts|js)"
  ],
  "testEnvironment": "node"
}
_

この構成を使用すると、_ts-jest_は.tsファイルのメモリトランスコンパイルを実行します。 _tsconfig.json_のoutDircompilerOptionsオプションがありますが、そのoutDirには何も書かれておらず、トランスポートされたjest-config.jsを使用できないためです。

その後、srcのテストフォルダーを移動し、Jest configを変更します。プロジェクトの新しい構造は次のとおりです。

_.
|--src
|  |--service.ts
|  |--tests
|     |--service.test.ts
|     |--jest-config.ts
|--dist
|--tsconfig.json 
|--package.json
_

新しいJest設定は次のとおりです。

_"jest": {
  "globalSetup": "./dist/tests/jest-config.js",
  "moduleFileExtensions": ["ts", "js", "json"],
  "testMatch": [
    "**/dist/**/*.test.js"
  ],
  "testEnvironment": "node"
}
_

これで、Jestのグローバル設定にjest-config.jsを使用できます。

添加

  • Jestセットアップファイル(私の例ではjest-config.js)は、1つの非同期関数をエクスポートする必要があります。

    module.exports = async function() { ... }

  • テストを実行する前に、ソース.tsファイルをコンパイルする必要があります。

7