2016-08-08 61 views
0

我是新來模擬測試,並想知道我將如何去與mockito嘲笑以下內容。如何模擬鑄造對象

uDAO = (UserDAO) dao; 

,其中道被定義爲

protected DAO<T, Long> dao; 

謝謝!

+0

問題是:如果事情是繼承的,比你將有一個很難嘲笑它。真正的解決方案是使用依賴注入來確保您可以在某些軟件中爲您的超類提供匹配對象。 – GhostCat

+0

你如何初始化'dao'? – kuhajeyan

回答

1

要爲私人和受保護字段(沒有公共setter方法)注入模擬,您必須使用反射。使用反射,您可以設置一個模擬對象來代替該受保護字段。以下是相關代碼的示例。

Field hack = <PUT YOU CLASS NAME>.class.getDeclaredField("dao"); 
hack.setAccessible(true); 
hack.set(<Object of the class where you are injecting the mock>,<the mock object>); 

要創建的嘲笑對象,你可以使用常規的PowerMockito.mockMockito.mock功能。

有關反射更多信息看看下面的鏈接:

Is it possible in Java to access private fields via reflection http://www.java2s.com/Code/Java/Reflection/Setprivatefieldvalue.htm