我正在創建一個測試HTTP相互作用的通用模擬客戶端。爲此,我希望能夠用同樣的方法做出許多回應。 與正常的模擬,這將不會是一個問題:嘲笑部分模擬與Mockito連續響應的通用數
when(mock.execute(any(), any(), any())).thenReturn(firstResponse, otherResponses)
不過,我使用的是部分模擬,在這裏我只是想嘲笑方法使HTTP請求,因爲可能沒有進入到現場在單元測試執行的上下文中,對於這個問題,通常是終點或因特網。
所以我會做這樣的事情:
doReturn(response).when(spy).execute(hostCaptor.capture(), requestCaptor.capture(), contextCaptor.capture());
不過,我想能夠支持多個響應(沒有太多的「互動」的)。但是沒有任何一種方法,一次只能得到一個以上的答案。
我一個解決方案的首次嘗試是反覆地做到這一點:
Stubber stubber = null;
for (HttpResponse response : responses) {
if (stubber == null) {
stubber = doReturn(response);
} else {
stubber = stubber.doReturn(response);
}
}
stubber.when(spy).execute(hostCaptor.capture(), requestCaptor.capture(), contextCaptor.capture());
這並不能然而,以驗證運行測試時(「未完成的磕碰檢測」)。
所以 - 有沒有辦法用Mockito實現這一點?
感謝您的閱讀。
謝謝您回答大衛,但我的問題是,我通常不知道r的數量響應,因爲它是一個數組(或可變參數)。 – tveon 2012-03-29 07:56:27
@tveon好的,看我的編輯如何處理這種情況。 – 2012-03-29 08:29:37
這看起來正是我在找的東西。 :) – tveon 2012-03-29 13:29:33