最初接觸 Mockito 還思考並嘗試過如何用它來 mock 返回值爲 void 的方法,然而 Google 查找到的通常都會說用 doThrow()
的辦法code
doThrow(new RuntimeException()).when(mockObject).methodWithVoidReturn();對象
由於沒法使用常規的 when(mockObject.foo()).thenReturn(...)
的方法。get
當時我就納悶,爲什麼我想 mock 一個返回值爲 void 的方法,倒是在模擬拋出一個異常,如今想來若是一個返回值爲 void 的方法,爲什麼要去 mock 這個方法呢?it
回想一個咱們要 mock 一個方法的意圖是什麼:io
- 在特定輸入參數的狀況下期待須要的輸出結果(返回值)
- 在方法拋出某種類型異常調用者做出的反應
對於 void 返回值的方法,若是要驗證有沒有被調用過幾回能夠在過後用 verify()
方法去斷言。因此基本上對於 void 返回值的方法通常可不用去 mock 它,只需用 verify() 去驗證,或者就是像前面同樣模擬出現異常時的狀況。class
因此本文並不像是去直接回答標題所示的問題: Mockito 如何 mock 返回值爲 void 的方法,而是如何應對 mock 對象的 void 方法 閱讀全文 >>mock