如何判断对象是否是Mockito模拟?

时间:2012-01-27 15:36:11

标签: java mockito

是否可以在代码中判断给定对象是否为Mockito模拟?

我想这样做的原因是在使用模拟时返回不同的错误消息。这将用于向其他开发人员建议他们应该使用预先准备好的模拟,该模拟已经设置为以有用的方式应答调用,而不是自己创建模拟。

目前我所拥有的最好的是object.getClass().getName().contains("EnhancerByMockitoWithCGLIB"),但这感觉很糟糕。

3 个答案:

答案 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()