В настоящее время мое весеннее приложение подключено с использованием @Autowired, @Component, @Resource и т. Д. Теперь я хочу написать тест, который требует проверки конкретных объектов в системе, но с сохранением реальной производственной проводки оставшихся объектов.
Допустим, тестируемый корневой объект называется Foo . Глубже по цепочке зависимостей Foo зависит от Bar. В настоящее время для макета этого объекта я создал test-applicationContext.xml, в котором есть только одна запись компонента:
<bean id="bar" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Bar" />
</bean>
test-applicationContext.xml объявлен в аннотации @ContextConfiguration, и поэтому Foo в конечном итоге будет зависеть от объекта Mocked Bar.
Можно ли получить тот же результат, не имея этого test-applicationContext.xml? то есть делать то же самое, но программно?
Так что в псевдокоде мне было интересно, смогу ли я получить что-то вроде:
public class MyTest {
@Test
public void simple() {
// create mock Bar object
// register mock Bar object in container
// resolve Foo object with all its dependencies but use the mock Bar object instead of the real one
// set some expectations on the Bar object
// call some method on Foo
}
}