是否可以在代码中判断给定对象是否是Mockito mock?
我想这样做的原因是在使用mock时返回不同的错误消息。这将用于向其他开发人员建议,他们应该使用预先准备好的mock,该mock已经设置为以有用的方式回答调用,而不是自己创建mock。
目前,我拥有的最好的是object.getClass().getName().contains("EnhancerByMockitoWithCGLIB")
,但这感觉很糟糕。
作为后续,Mockito公共API现在有了这个方法:
MockingDetails org.mockito.Mockito.mockingDetails(Object toInspect)
这是@David Wallace提出的问题的结果。返回的对象支持方法isMock()
和isSpy()
,以及其他一些提供附加嘲讽信息的方法。
示例:
import static org.mockito.Mockito.mockingDetails;
assertThat(mockingDetails(probablyAMockedObject).isMock()).isTrue();
看起来没有这样的API(请提出问题,应该是!)幸运的是(根据您下面的评论)org.mockito.internal.util
包中有一个方法:
import org.mockito.internal.util.MockUtil;
new MockUtil().isMock(obj)
未来Mockito.isMock()
方法可能会添加到公共API中,请参阅:Issue 313:在org.mockito.internal外部提供isMock。