Es mag für diejenigen, die es wissen, selbstverständlich sein, aber ich werde es hier zeigen, weil es ein großer Schmerz war.
Es gab solche Repository-Schnittstellen.
Für Unit-Tests habe ich eine Konfigurationsklasse erstellt, die ein Modell jedes Repositorys zurückgibt.
MyConfig.java
@Configuration
public class MyConfig {
@Bean
public MenuRepository menuRepository() {
return Mockito.mock(MenuRepository.class);
}
@Bean
public CategoryRepository categoryRepository() {
return Mockito.mock(CategoryRepository.class);
}
@Bean
public UserRepository userRepository() {
return Mockito.mock(UserRepository.class);
}
}
Der Test des Injektionsziels ist wie folgt.
MyTest.java
//Abkürzung
public class MyTest {
@Autowired
private MenuRepository menuRepository;
@Autowired
private CategoryRepository categoryRepository;
@Autowired
private UserRepository userRepository;
}
Die @ categoryRepository-Methode @Bean wird aufgerufen, aber keine andere @ Bean-Methode wird aufgerufen.
Infolgedessen wird nur "Category Repository" am Injektionsziel verspottet. .. ..
Betrachtet man den Inhalt des Containers, so gibt es nur zwei "CategoryRepository" (Schein und Original) und nur eine andere.
Durch Ändern des Methodennamens werden jetzt alle @ Bean-Methoden sicher aufgerufen.
MyConfig.java
@Configuration
public class MyConfig {
@Bean
@Primary
public MenuRepository menuRepositoryBean() {
return Mockito.mock(MenuRepository.class);
}
@Bean
@Primary
public CategoryRepository categoryRepositoryBean() {
return Mockito.mock(CategoryRepository.class);
}
@Bean
@Primary
public UserRepository userRepositoryBean() {
return Mockito.mock(UserRepository.class);
}
}
Außerdem habe ich eine Fehlermeldung erhalten, dass der Typ aktiviert ist, und habe daher "@ Primary" hinzugefügt.
Warum passiert das ...? ??
Recommended Posts