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

2022-08-31 13:11:37

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

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

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


答案 1

似乎没有这样的API(请提出一个问题,它应该是!幸运的是(按照您在下面的评论),包中有一种方法:org.mockito.internal.util

import org.mockito.internal.util.MockUtil;

new MockUtil().isMock(obj)

将来的方法可能会添加到公共 API 中,请参阅:问题 313:在 org.mockito.internal 外部提供 isMock)。Mockito.isMock()


答案 2

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

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

这是@David华莱士提出的问题的结果。返回的对象支持这些方法以及提供其他模拟信息的其他一些方法。isMock()isSpy()


推荐