【发布时间】:2010-10-05 20:53:10
【问题描述】:
我使用来自 this blog 的代码在我的单元测试中注入 Mockito 模拟。但是,在模拟自动装配之前,它会被 Spring 包装在 JDK 代理中。这会导致任何 verify(autowiredMock) 抛出 “传递给 verify() 的参数不是模拟!”。当 Mockito 检查传递给 verify(..) 的参数是否是此方法中有效的 Mockito 模拟对象时,将引发异常:
private static Method getCallbacksSetter(Class type, String methodName) throws NoSuchMethodException {
return type.getDeclaredMethod(methodName, new Class[]{ Callback[].class });
}
我的问题是如何告诉 Spring 不要代理我在 BeanFactoryPostProcessor 中注册的 Mockito 模拟 bean?请注意,我想避免设置 proxy-target-class="true"。
谢谢
【问题讨论】:
-
好吧,
proxy-target-class是唯一的方法——你为什么要避免它? -
因为 CJLIB 要求接口实现类具有可访问的无参数构造函数,而我的大多数类都有私有的无参数或自动装配的多参数构造函数。