2015-02-09 105 views
2

我有一個門面類,它實現了以下方法:getTotalNumOfItems(Query query)。門面站在兩個其他服務類之前,它們實現相同的方法。根據query參數的類型,外觀決定是委託給其中一個服務還是另一個。單元測試門面類

我的兩難困境是如何爲門面編寫單元測試,而測試不必知道項目的數量是如何派生的。否則,它看起來像一個集成測試,而不是一個單元測試了。

我已經提供了兩種服務的就地模擬版本,使用Mockito。然而,當我爲此編寫單元測試時,我可以測試的唯一事情是「驗證facade是否返回數字,等於mock返回的內容(取決於查詢類型)」。似乎沒有辦法以比這更不可知的方式測試立面。

我在這裏做錯了什麼?我應該感到擔心嗎?我想,外觀的性質是這樣的,它的效率只能通過了解它委託的類來驗證。當然,我確信在這兩種服務中都使用相同的方法編寫單元測試。

+0

您需要測試單個服務對象而不是門面本身。 – SMA 2015-02-09 10:32:26

+0

所以我做到了。然而,我想確保門面總是決定正確的服務,委託給 – preslavrachev 2015-02-09 10:33:29

+0

不,你不應該你不做UT。 UT只是類和具體的方法。 – SMA 2015-02-09 10:35:55

回答

4

正如您所說的,立面的責任是決定要委派給哪個服務。這是你需要測試的。該服務的返回值對測試沒有興趣。因此,對於你的嘲笑,只要確保在一個測試用例中調用了其中一個,另一個則從未調用過。而第二個測試案例應該是相反的。