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 アクセスする」みたいなのは、「外部サービスの利用」に当たるものとします。