Весеннее контекстное конфигурирование с использованием bean-компонента несколько раз

Дан класс, который выполняет тестирование некоторых компонентов. Я хочу смоделировать fooService.send только один раз в тесте и использовать его в aService и bService:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AComponentTestConfiguration.class)
public class AComponentTest {

    @Autowired
    private AService aService;

    @Autowired
    private BService bService;

    @Autowired
    private FooService fooService;

    // ... when(fooService.send(any())).thenReturn(response); 
}

И конфигурация:

@Configuration
public class AComponentTestConfiguration {

    private CService cService = new CService(); // 1

    @Bean public FooService fooService() { return mock(FooService.class); } // 2
    @Bean public BarService barService() { return new BarService(); } // 3

    @Bean public AService aService() { return new AService(fooService(), barService(), cService); } // 4
    @Bean public BService bService() { return new AService(fooService(), barService(), cService); }
}

Как я могу использовать экземпляры службы или макеты, которые должны быть предоставлены нескольким компонентам?

1: использовать закрытую переменную в экземплярах AService и BService
2, 3: Используйте функции - это приведет к 2 экземплярам для FooService и BarService, верно?
4: Какую опцию нужно использовать для макетов и реальных сервисных экземпляров?

0 ответов

Другие вопросы по тегам