Me gustaría inyectar un objeto simulado Mockito en un bean Spring (3+) para realizar pruebas unitarias con JUnit. Actualmente, mis dependencias de bean se inyectan mediante la @Autowired
anotación en campos de miembros privados.
He considerado usar, ReflectionTestUtils.setField
pero la instancia de bean que deseo inyectar es en realidad un proxy y, por lo tanto, no declara los campos de miembros privados de la clase de destino. No deseo crear un setter público para la dependencia, ya que luego modificaré mi interfaz con el único fin de realizar pruebas.
He seguido algunos consejos dados por la comunidad de Spring, pero el simulacro no se crea y el cableado automático falla:
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
El error que encuentro actualmente es el siguiente:
...
Caused by: org...NoSuchBeanDefinitionException:
No matching bean of type [com.package.Dao] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {
@org...Autowired(required=true),
@org...Qualifier(value=dao)
}
at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901)
at org...DefaultListableBeanFactory.doResolveDependency(D...y.java:770)
Si configuro el constructor-arg
valor en algo no válido, no se produce ningún error al iniciar el contexto de la aplicación.