В моем приложении я использую FactoryModuleBuilder для автоматического создания экземпляров некоторого класса:
new AbstractModule() {
@Override
protected void configure() {
install(new FactoryModuleBuilder().implement(A.class,B.class).build(A.AFactory.class));
}
});
В моем тесте я действительно не хочу использовать реализацию (класс B), поэтому я хотел бы настроить модуль, чтобы фабрика возвращала макет Mockito следующим образом:
new AbstractModule() {
@Override
protected void configure() {
install(new FactoryModuleBuilder().implement(A.class,myMockInstance).build(A.AFactory.class));
}
});
Очевидно, что вышеизложенное не имеет смысла, потому что реализация () сообщает, какая реализация должна использоваться для интерфейса A, но я надеюсь, что это доказывает, что я хочу, чтобы созданная фабрика использовала мой фиктивный объект. Тогда я мог бы использовать свой макет, как обычно:
Mockito.when(myMockInstance.doStuff()).thenReturn(result);
Возможно ли это или мне нужно вручную создать класс C, реализующий A, который будет действовать как макет?