我正在处理一个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对其进行模拟。
您可以使用Powermock(这是一个非常酷的工具;)模拟static
和final
方法(如本例所示),甚至可以模拟private
方法https://github.com/powermock/powermock.
您可以将它与Mockito一起使用,如Mockito wiki文章中所述。在那里你会发现一些有用的例子。