java 如何判断一个对象是否是Mockito mock?

slwdgvem  于 2023-04-10  发布在  Java
关注(0)|答案(3)|浏览(156)

是否可以在代码中判断给定的对象是否是Mockito mock?
我这样做的原因是,当使用mock时,返回一个不同的错误消息。这将用于建议其他开发人员,他们应该使用一个预先准备好的mock,该mock已经设置为以一种有用的方式应答调用,而不是自己创建mock。
目前我最好的是object.getClass().getName().contains("EnhancerByMockitoWithCGLIB"),但这感觉很古怪。

svmlkihl

svmlkihl1#

作为后续,Mockito公共API现在有这个方法:

MockingDetails org.mockito.Mockito.mockingDetails(Object toInspect)

这是@大卫Wallace提出的问题的结果。返回的对象支持方法isMock()isSpy()沿着其他一些提供额外模拟信息的方法。

示例:

import static org.mockito.Mockito.mockingDetails; 
assertThat(mockingDetails(probablyAMockedObject).isMock()).isTrue();
nnt7mjpx

nnt7mjpx2#

看起来没有这样的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)

p5fdfcr1

p5fdfcr13#

如果你使用的是io.mockk.mockk,那么你可以:

isMockKMock()

相关问题