是否有可能使用mockito中的when-return來返回不同的類型。Mockito:嘲笑並返回不同類型的值
我的功能
m.findDocument(id)
返回基於id
這我轉換爲字符串作進一步處理的文件。 但是,爲了測試我從一個id文件中獲取字符串。因此,有效地我想被返回的字符串時,函數被調用象下面這樣:
因爲,一個是文件型,其他的字符串,是那裏的Mockito辦法,我可以這樣做?
感謝
是否有可能使用mockito中的when-return來返回不同的類型。Mockito:嘲笑並返回不同類型的值
我的功能
m.findDocument(id)
返回基於id
這我轉換爲字符串作進一步處理的文件。 但是,爲了測試我從一個id文件中獲取字符串。因此,有效地我想被返回的字符串時,函數被調用象下面這樣:
因爲,一個是文件型,其他的字符串,是那裏的Mockito辦法,我可以這樣做?
感謝
事情是:使用模擬框架不會改變Java語言。
當一個方法的簽名是public Foo bar()
- 調用嘲笑對象bar()
那麼即使,該方法必須返回美孚的一個實例。您不能使用模擬來靜默地更改方法的聲明返回類型。
當然但是,你可以這樣做:
Document mockedDocument = mock(Document.class);
DocumentFinder mockedFinder = mock(DocumentFinder);
when(mockedFinder.findDocument(id)).thenReturn(mockedDocument);
when(mockedDocument.getSomeInfo()).thenReturn("that string");
但請注意:你只模擬該文檔實例的情況下,你不能用一個「真實」的文檔實例。你的目標應該是只有使用嘲諷,如果不處理嘲笑是不可能/太難的。
號取決於是否使用時+ thenReturn或doReturn/doAnswer,你要麼得到一個編譯錯誤或一個ClassCastException。
你可以做的是從方法中返回一個模擬文檔,然後在模擬「轉換」時返回測試字符串。
謝謝。第二部分似乎令人困惑! – AYa