我怎么知道对象是否是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()方法,稍后可以对其进行增强以提供更多的模拟相关信息。