Necesito desarrollar un algoritmo bastante simple, pero me siento confundido sobre cómo escribir mejor una prueba para ello.¿Qué debo hacer para probar esta unidad?
Descripción general: el usuario debe poder eliminar un plan. Plan tiene Tareas asociadas, también deben eliminarse (siempre que no estén hechas).
Pseudo-código como la forma en que el algoritmo debe comportarse:
PlanController.DeletePlan(plan)
=>
PlanDbRepository.DeletePlan()
ForEach Task t in plan.Tasks
If t.Status = Status.Open Then
TaskDbRepository.DeleteTask(t)
End If
End ForEach
Ahora por lo que tengo entendido, no se supone que las pruebas unitarias para tocar la base de datos o generalmente requieren el acceso a cualquiera de los sistemas externos, por lo que' m adivinar que tengo dos opciones:
1) Mock a cabo las llamadas del repositorio, y comprobar si han sido llamados el número apropiado de veces como afirma
2) Cree resguardos para ambas clases de repositorio, establezca su indicador de eliminación manualmente y luego verifique que los objetos apropiados hayan sido marcados para su eliminación.
En ambos enfoques, la gran pregunta es: ¿Qué estoy exactamente probando aquí? ¿Cuál es el valor EXTRA que tales pruebas me darían?
Cualquier idea en esto sería muy apreciada. Esto técnicamente no está vinculado a ningún marco específico de pruebas de unidades, aunque tenemos RhinoMocks para ser utilizado. Pero preferiría una explicación general, para poder entender esto.