モノレポでのテスト
リンティングやビルドと同様に、テストは本番環境対応のモノレポにおいて極めて重要な部分です。エンドツーエンドテストを使用する場合でも、単体テストスイートを使用する場合でも、Turborepo と統合することで、大幅な速度向上を実現できます。
テストランナーの使用
次のようなモノレポがあるとしましょう
├── apps
│ └── web
│ └── package.json
└── packages
└── shared
└── package.jsonapps/web と packages/shared の両方に独自のテストスイートがあります。それらの package.json ファイルは次のようになります。
{
"scripts": {
"test": "jest"
}
}ルート turbo.json の内部では、パイプライン に test タスクを設定することをお勧めします。
{
"pipeline": {
"test": {}
}
}これで、turbo test を実行して、Turborepo でリポジトリ全体をテストできます。
Turborepo のキャッシング のため、変更されたファイルがあるリポジトリのみがテストされるため、多くの時間を節約できます。
ウォッチモードでのテストの実行
通常どおりテストスイートを実行すると、完了して stdout に出力されます。つまり、Turborepo を使用してキャッシュ することができます。
しかし、ウォッチモードでテストを実行すると、プロセスは終了しません。そのため、ウォッチタスクは開発タスク により似ています。
この違いのため、テストを実行するためのタスクと、ウォッチモードで実行するためのタスクの **2 つの異なる Turborepo タスク** を指定することをお勧めします。
例を次に示します。
各ワークスペースの個々の package.json ファイル内
{
"scripts": {
"test": "jest",
"test:watch": "jest --watch"
}
}ルート turbo.json 内
{
"pipeline": {
"test": {},
"test:watch": {
"cache": false
}
}
}ルート package.json 内
{
"scripts": {
"test": "turbo run test",
"test:watch": "turbo run test:watch"
}
}