我需要開發一個相當簡單的算法,但對於如何爲其編寫最好的測試感到困惑。我將如何去測試這個單元測試?
一般說明:用戶需要能夠刪除一個計劃。計劃有與其相關的任務,這些也需要被刪除(只要他們還沒有完成)。
僞代碼的算法應該如何表現:
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。但我更喜歡一個一般的解釋,以便我可以適當地包裹我的頭。