モノレポでのテスト
リンティングやビルドと同様に、テストは本番環境対応のモノレポにおいて極めて重要な部分です。エンドツーエンドテストを使用する場合でも、単体テストスイートを使用する場合でも、Turborepo と統合することで、大幅な速度向上を実現できます。
テストランナーの使用
次のようなモノレポがあるとしましょう
├── apps
│ └── web
│ └── package.json
└── packages
└── shared
└── package.json
apps/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"
}
}