是否可以在代码中判断给定对象是否为Mockito模拟?
我想这样做的原因是在使用模拟时返回不同的错误消息。这将用于向其他开发人员建议他们应该使用预先准备好的模拟,该模拟已经设置为以有用的方式应答调用,而不是自己创建模拟。
目前我所拥有的最好的是object.getClass().getName().contains("EnhancerByMockitoWithCGLIB")
,但这感觉很糟糕。
答案 0 :(得分:59)
看起来没有这样的API(请提出问题,应该是!)幸运的是(在下面的评论之后)org.mockito.internal.util
包中有一个方法:
import org.mockito.internal.util.MockUtil;
new MockUtil().isMock(obj)
以后Mockito.isMock()
方法可能会添加到公开API中,请参阅:Issue 313: Provide isMock outside of org.mockito.internal)。
答案 1 :(得分:42)
作为后续跟进,Mockito公共API现在有这种方法:
MockingDetails org.mockito.Mockito.mockingDetails(Object toInspect)
这是@David Wallace提出的问题的结果。返回的对象支持方法'isMock()'和'isSpy()',稍后可以增强它们以提供更多模拟相关信息。
答案 2 :(得分:-1)
如果您使用的是io.mockk.mockk,则可以:
isMockKMock()