[英]How do I mock Object.getClass?
我正在研究一個Java項目想要為DTO中的.equals方法編寫單元測試。 在.equals方法中,有一個.getClass()方法被兩個被測對象調用。 我想嘲笑這個,但我不知道它想要什么類型的對象。 我試過了,
when(mockRoomInv.getClass()).thenReturn(RoomInv.class);
但肯定是沒有做任何事情。 getClass的返回類型是什么,我該如何操作它?
由於Object.getClass()
是final,因此您無法使用Mockito模擬該方法。 我強烈建議你重構代碼以另一種方式注入類。 如果那是不可能的,你可以嘗試使用powermock ,在那里你可以模擬任何最終方法。 Object.getClass()
有點特殊,所以一定要在powermock中設置MockGateway.MOCK_GET_CLASS_METHOD = true
。
Object.getClass()
是一個final
方法,所以你不能用Mockito來模擬它。
你可以在https://github.com/powermock/powermock上模擬static
和final
方法(就像這個)甚至private
方法和Powermock(它是一個非常酷的工具;)。
您可以將其與Mockito一起使用,如Mockito wiki文章中所述 。 在那里你會發現一些有用的例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.