| X | small | medium | large | enormous |
|---|---|---|---|---|
| テストケースの時間制限 | 100 ms | 1,000 ms | 5,000 ms | ASAP |
| 設定ファイル | no | OK | OK | OK |
| 環境変数 | no | OK | OK | OK |
| ネットワーク | no | localhost only | OK | OK |
| ミドルウェア | no | on memory only | OK | OK |
| ファイルシステム | no | localhost only | OK | OK |
| システムコール | no | no | OK | OK |
| 外部サービスの利用 | no | no | no | OK |
| マルチスレッド | no | no | OK | OK |
sleep |
no | no | OK | OK |
timer |
no | fake | fake | fake |
*.spec.ts は、 Small テストです。テスト対象のクラスが使う Dependencies はすべて Mock にしてください。
*.test.ts は、Medium テストです。同じ名前空間以下の Dependencies と外部モジュールは適宜 import し、生成して使えます。
__tests__/ ディレクトリにあるものは、 Large テストです。テストファイルからは ../index.ts と外部モジュールのみ import してよいです。
例外として、 ./src/infrastructure/ は外部モジュール扱いして良いです。
リポジトリルートの tests/ ディレクトリには、 Enormous テストがあります。
これは、 servers を使う、いわゆる「シナリオテスト」「E2E テスト」を実装する場所です。
例えば MinIO や Grafanaなどを docker-compose.middleware.yml に含めておいて利用するなら、ミドルウェア扱いして良いです。
ただし、「 servers/ にあるものを docker run して http アクセスする」みたいなのは、「外部サービスの利用」に当たるものとします。