如何模拟 Object.getClass?
我正在开发一个Java项目,想要为我在DTO中的.equals方法编写一个单元测试。在 .equals 方法中,有一个由被测对象调用的 .getClass() 方法。我想嘲笑这个,但我不知道它想要什么类型的对象。我试过了
when(mockRoomInv.getClass()).thenReturn(RoomInv.class);
但果然没有做任何事情。getClass 的返回类型是什么,如何操作它?
我正在开发一个Java项目,想要为我在DTO中的.equals方法编写一个单元测试。在 .equals 方法中,有一个由被测对象调用的 .getClass() 方法。我想嘲笑这个,但我不知道它想要什么类型的对象。我试过了
when(mockRoomInv.getClass()).thenReturn(RoomInv.class);
但果然没有做任何事情。getClass 的返回类型是什么,如何操作它?
作为最终,你不能用Mockito来嘲笑这种方法。我强烈建议您重构代码,以另一种方式注入类。如果这是不可能的,你可以尝试powermock,在那里你可以嘲笑任何最终的方法。 有点特别,所以一定要设置在powermock。Object.getClass()
Object.getClass()
MockGateway.MOCK_GET_CLASS_METHOD = true
Object.getClass()
是一种方法,所以你不能用Mockito来嘲笑它。final
你可以用Powermock模拟和方法(就像这个一样),甚至方法(这是一个非常酷的工具;)可在 https://github.com/powermock/powermock。static
final
private
您可以将其与Mockito一起使用,如Mockito wiki文章中所述。在那里,你会发现一些有用的例子。