1. 概要
- Sociable Test(実際のDB連携)方式の単体テスト構築方法を共有
- TypeORMのようなORMは型安全性の問題があるため、実際のDBを使ったテストが必要
2. Solitary Test vs Sociable Test
- 比較
- Solitary Test は依存関係をMockに置き換えて独立してテストする(高速だが実環境との差異が生じる可能性がある)
- Sociable Test は実際の外部依存性(DB)とともにテストすることで信頼性を確保できる(遅いが現実的な問題を早期に発見できる)
- Solitary Testの限界
- モッキングだけでは実際のDBとの相互作用の問題を完全に見つけるのは難しい
- TypeORMの型チェックの問題によりランタイムエラーが発生する可能性がある
- Sociable Testの必要性
- 実際のDBとの連携を通じて、複雑なクエリ、トランザクション、リレーション設定の問題を検証できる
- テスト用データベースを設定し、トランザクション方式でデータ分離テストを実施
- DB Sociable Testの利点と注意点
- 利点: 信頼性の高いテスト、ORM関連問題の早期発見、スキーマ不一致の確認
- 注意点: テスト速度の低下、環境設定の複雑さ、トランザクション管理が必要
3. NestJSでのDB連携テスト実装
- 設定
- MySQLを利用したテストDB接続を設定
- トランザクションを活用して各テストの変更内容をロールバック処理
- Jestテストフレームワークのライフサイクル活用
- beforeAll / beforeEach / afterEach / afterAll を利用
- DBの初期化と接続、トランザクションの開始と終了を設定
4. 結論
- 単体テスト作成時はSolitary TestとSociable Testを適切に組み合わせて使うとよい
- ORM関連の問題を防ぐために、Sociable Testは大いに役立つ
まだコメントはありません。