2011-09-15 92 views
1

我有一個服務類,我想單元測試。該服務調用存儲庫類方法以保存一些數據。但在我調用save方法之前,我有一個驗證方法屬於被測試的服務類,它驗證類的特性是否作爲存儲庫保存方法的參數持久化。如何模擬MOQ的測試類的方法

我知道要驗證儲存庫保存方法被調用,我必須模擬儲存庫類並設置保存方法,但是如何驗證屬於被測試服務類的驗證方法是在何時調用的單元測試被測方法,因爲它們屬於同一個類?

回答

0

您可以通過傳遞使Verify方法報告錯誤的無效數據來間接測試它。

例子:

  • Verify拋出的無效值異常:讓你的單元測試檢查,這個異常被拋出
  • Verify回報false和測試方法不調用Save因爲這個:斷言您的存儲庫模擬沒有發生對Save發生的呼叫。
+0

所以你說的是我應該確保validate方法拋出一個異常通過單元測試傳遞無效數據?有道理,我會寫一個單獨的單元測試方法來測試當我傳入無效數據時拋出異常。謝謝 – Tunji

0

你不能直到你注入你的服務類在其他類。這是你需要做的。

  1. 創建一個類,它通過公共構造函數或公共屬性接受服務類的實例。
  2. 模擬您的服務類所依賴的存儲庫的類型,以便保存實體並將其保存在變量中。
  3. 設置模擬回購的Save方法的期望值。
  4. 模擬您的服務類,但在您的模擬服務類(通過屬性或承建商)注入嘲笑的回購。
  5. 在模擬服務類的Validate方法上設置期望值。
  6. 注入步驟1中創建的類中的模擬服務類,現在如果您的期望沒有達到,測試將失敗。