Skip to content

アプリケーション層テスト

CQRS アーキテクチャにおける Command/Query ハンドラー、バリデーション、ライフサイクル遷移をテストする。

Command/Query ハンドラーの単体テスト

  • 各 Command ハンドラーが正しい副作用(DB更新、イベント発行)を生じること
  • 各 Query ハンドラーが正しいデータを返すこと
  • ハンドラー内のビジネスルール(認可チェック等)が適切に機能すること

バリデーションテスト(FluentValidation)

  • 各バリデーションルールが正しく動作すること
  • バリデーションエラーメッセージが適切であること
  • 複合条件のバリデーション(例: 配偶者控除と配偶者特別控除の排他制約)

ライフサイクル遷移テスト

申告(Declaration)のライフサイクル遷移が正しく動作すること。

申告作成従業員が提出管理者が差し戻し従業員が再編集管理者が承認確定処理自動保存DraftSubmittedReturnedApprovedFinalized
申告作成従業員が提出管理者が差し戻し従業員が再編集管理者が承認確定処理自動保存DraftSubmittedReturnedApprovedFinalized
  • 許可された遷移のみが成功すること
  • 不正な遷移(例: Draft → Approved)が拒否されること
  • 各遷移時のイベント発行・監査ログ記録

スナップショットテスト

CQRS スナップショット方式に基づく JSONB データの生成・復元をテストする。

  • スナップショット生成時に全フィールドが正しくシリアライズされること
  • スナップショットからの復元が元データと一致すること
  • スキーマ進化(新フィールド追加)時の後方互換性

カスケード再計算テスト

依存する値が変更された際の再計算が正しく連鎖すること。

  • 所得額変更 → 控除額再計算 → 税額再計算の連鎖
  • 家族構成変更 → 人的控除再計算 → 税額再計算の連鎖
  • 再計算の範囲が必要最小限であること(不要な再計算が発生しないこと)