我怎么知道对象是否是Mockito模拟?
是否有可能在代码中告诉给定的对象是否是Mockito模拟?
我想这样做的原因是当使用模拟时返回一个不同的错误信息。 这将被用于向其他开发者build议他们应该使用预先准备好的模拟,这已经被设置为以有用的方式回答调用,而不是自己创build模拟。
目前最好的我是object.getClass().getName().contains("EnhancerByMockitoWithCGLIB")
但这感觉哈克。
看起来像没有这样的API(请提出一个问题,应该是!)幸运的是(下面的评论下面) org.mockito.internal.util
包中有一个方法:
import org.mockito.internal.util.MockUtil; new MockUtil().isMock(obj)
将来Mockito.isMock()
方法可能会添加到公共API,请参阅: 问题313:在org.mockito.internal之外提供isMock) 。
作为后续,Mockito公共API现在有这样的方法:
MockingDetails org.mockito.Mockito.mockingDetails(Object toInspect)
这是戴维·华莱士提出的问题的结果。 返回的对象支持isMock()方法和isSpy()方法,稍后可以对其进行增强以提供更多的模拟相关信息。