かなり単純なアルゴリズムを開発する必要がありますが、そのテストを最適に作成する方法としては少し混乱しています。
一般的な説明:ユーザーはプランを削除できる必要があります。プランにはタスクが関連付けられています。これらも削除する必要があります(まだ実行されていない場合)。
アルゴリズムの動作としての擬似コード:
PlanController.DeletePlan(plan)
=>
PlanDbRepository.DeletePlan()
ForEach Task t in plan.Tasks
If t.Status = Status.Open Then
TaskDbRepository.DeleteTask(t)
End If
End ForEach
私が理解している限り、単体テストはデータベースにアクセスしたり、一般的に外部システムへのアクセスを必要としたりすることは想定されていないため、ここでは2つのオプションがあると思います。
1)リポジトリ呼び出しをモックアウトし、それらがアサートとして適切な回数呼び出されているかどうかを確認します
2)両方のリポジトリクラスのスタブを作成し、それらの削除フラグを手動で設定してから、適切なオブジェクトが削除対象としてマークされていることを確認します。
どちらのアプローチでも、大きな問題は次のとおりです。ここで正確に何をテストしているのでしょうか。そのようなテストが私に与えるであろう追加の価値は何ですか?
これに関する洞察をいただければ幸いです。これは、RhinoMocksを使用する必要がありますが、技術的には特定の単体テストフレームワークにリンクされていません。しかし、私は一般的な説明を好みます。そうすれば、これに頭を適切に巻き付けることができます。