Chciałbym wstrzyknąć próbny obiekt Mockito do fasoli Spring (3+) na potrzeby testów jednostkowych z JUnit. Moje zależności fasoli są obecnie wstrzykiwane za pomocą @Autowired
adnotacji na prywatnych polach członkowskich.
Zastanawiałem się nad użyciem, ReflectionTestUtils.setField
ale instancja komponentu bean, którą chcę wstrzyknąć, jest w rzeczywistości proxy i dlatego nie deklaruje pól prywatnych członków klasy docelowej. Nie chcę tworzyć publicznych ustawień dla zależności, ponieważ będę modyfikował mój interfejs wyłącznie do celów testowych.
Postępowałem zgodnie z radami społeczności Spring, ale próbka nie została utworzona, a automatyczne okablowanie nie powiodło się:
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
Występujący obecnie błąd jest następujący:
...
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)
Jeśli ustawię constructor-arg
wartość na coś nieprawidłowego, nie wystąpi błąd podczas uruchamiania kontekstu aplikacji.