Мне нужно разработать довольно простой алгоритм, но я немного запутался, как лучше всего написать для него тест.
Общее описание: Пользователь должен иметь возможность удалить план. С планом связаны задачи, их также необходимо удалить (если они еще не выполнены).
Псевдокод того, как должен вести себя алгоритм:
PlanController.DeletePlan(plan)
=>
PlanDbRepository.DeletePlan()
ForEach Task t in plan.Tasks
If t.Status = Status.Open Then
TaskDbRepository.DeleteTask(t)
End If
End ForEach
Теперь, насколько я понимаю, модульные тесты не должны касаться базы данных или вообще требуют доступа к каким-либо внешним системам, поэтому я предполагаю, что у меня есть два варианта:
1) Смоделируйте вызовы репозитория и проверьте, вызывались ли они соответствующее количество раз в качестве утверждений
2) Создайте заглушки для обоих классов репозитория, установив для них флаг удаления вручную, а затем убедитесь, что соответствующие объекты помечены для удаления.
В обоих подходах возникает большой вопрос: что именно я здесь тестирую? Какую ДОПОЛНИТЕЛЬНУЮ ценность мне дадут такие тесты?
Любое понимание этого будет высоко оценено. Технически это не связано с какой-либо конкретной средой модульного тестирования, хотя у нас есть RhinoMocks для использования. Но я бы предпочел общее объяснение, чтобы я мог правильно обдумать это.