我需要获取实例的bean名称。所以我构建(简化):
public String getName(Object instance) {
return uncapitalize(instance.getClass().getSimpleName();
}
在测试过程中发生的情况是mock(MyInstance.class)
进入该方法。我得到的不是"myInstance"
,而是"testClassName$$MyInstance$$EnhancerByMockito$$...."
是否有可能检测到该实例是模拟实例并获得"真实"类型?
感谢@Andy Turner,我现在使用这个:
static final String ENHANCER = "$$EnhancerByMockitoWithCGLIB$$";
static Class<? extends Object> typeOf(Object instance) {
Class<? extends Object> type = instance.getClass();
while(type.getSimpleName().contains(ENHANCER)) {
type = type.getSuperclass();
}
return type;
}