Как мне провести модульное тестирование этого?

Мне нужно разработать довольно простой алгоритм, но я немного не понимаю, как лучше всего написать для него тест.

Общее описание: Пользователь должен иметь возможность удалить Строить планы. У плана есть связанные с ним Задачи, их также необходимо удалить (если они еще не выполнены).

Псевдокод, определяющий поведение алгоритма:

   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) Смоделируйте вызовы репозитория и проверьте, были ли они названы соответствующим номером раз как Asserts

2) Создайте заглушки для обоих классов репозитория, установите их флаг удаления вручную, а затем убедитесь, что соответствующие объекты были отмечены для удаления.

В обоих подходах возникает большой вопрос: что именно я здесь тестирую? Какую ДОПОЛНИТЕЛЬНУЮ ценность могут дать мне такие тесты?

Мы будем очень признательны за любое понимание этого вопроса. Технически это не связано с какой-либо конкретной структурой модульного тестирования, хотя у нас есть RhinoMocks, которые можно использовать. Но я бы предпочел общее объяснение, чтобы я мог как следует осмыслить это.

5
задан Sam 8 December 2010 в 10:45
поделиться