Я хотів би ввести макетний об’єкт Mockito в боб Spring (3+) для цілей тестування блоку з JUnit. Наразі мої залежності від квасолі вводяться за допомогою @Autowired
анотації на поля приватних членів.
Я розглядав можливість використання, ReflectionTestUtils.setField
але екземпляр bean, який я хочу ввести, є насправді проксі, і, отже, не оголошує поля приватних членів цільового класу. Я не хочу створювати загальнодоступний сетер для залежності, оскільки потім буду модифікувати свій інтерфейс виключно для цілей тестування.
Я дотримувався декількох порад, які дала громада Spring, але макет не створюється, і автоматичне підключення не вдається:
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
Помилка, з якою я зараз стикаюся, полягає в наступному:
...
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)
Якщо я встановив constructor-arg
значення на щось недійсне, при запуску контексту програми не виникає помилок.