我使用它的形式的方法的第三方庫:懲戒與捕獲的泛型返回一個迭代的方法
public interface ThirdPartyMessageThing<T> {
Iterator<? extends MessageEntry<T>> getMessages(){}
}
我試圖嘲弄調用的getMessages()返回一個模擬的迭代器,所以我可以控制使用Mockito的行爲hasNext()
和next()
。
我有一個嘲笑的ThirdPartyMessageThing<String>
對象叫做thirdPartyMessageThing
。
如果我試圖嘲弄迭代器,像這樣:
Iterator<MessageEntry<String>> mockedIterator = Mockito.mock(Iterator.class);
的模擬似乎是好的,直到我嘗試它作爲一個呼叫模擬在返回when()
:
when(thirdPartyMessageThing.getMessages()).thenReturn(mockedIterator);
編譯器不喜歡這樣說,它不能解決該方法。
我得到同樣的行爲,如果我用我的IDE的自動完成從該方法我試圖模擬一個呼叫產生的局部變量:
Iterator<? extends MessageEntry<String>> mockedIterator =
thirdPartyMessageThing.getMessages();
,並嘗試使用,作爲參數thenReturn()
。 但是,如果我只是將mock(Iterator.class)
作爲參數放入thenReturn()
,編譯器不會發出抱怨,但我無法訪問Iterator以覆蓋它的方法。
我該如何嘲笑這個迭代器,以便我可以將它用作模擬並覆蓋它的方法?