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 テスト」を実装する場所です。

例えば MinIOGrafanaなどを docker-compose.middleware.yml に含めておいて利用するなら、ミドルウェア扱いして良いです。

ただし、「 servers/ にあるものを docker run して http アクセスする」みたいなのは、「外部サービスの利用」に当たるものとします。