У меня есть класс конфигурации с несколькими MockBeans, заменяющими фактические bean-компоненты в контексте для тестов.
@Configuration
public class MyTestConfig {
@MockBean
private MyService myService;
}
Я использую эти макеты в своих тестах:
@Import({ MyTestConfig .class })
public class MyTest {
@Autowired
private MyService myService;
@Test
public void aTest() {
...
}
}
Сначала идея быладобавить заглушку в этот класс конфигурации MyTestConfig
, чтобы макет был предварительно подготовлен для всех тестов, поэтому я сделал это в методе @PostConstruct
, и он работал просто отлично - макет в тесте вернул ожидаемое значение:
@PostConstruct
public void init() {
when(myService.foo("say hello")).thenReturn("Hello world");
}
Однако оказалось, что создание готового макета, подходящего для всех испытаний, может быть сложным, поэтому мы решили перенести заглушку на испытания.
@Test
public void aTest() {
when(myService.foo("say hello")).thenReturn("Hello world");
}
Иэто не работает - метод с заглушкой возвращает null
.Мы хотим оставить MockBeans в классе конфигурации, но заглушить их в тестах, поэтому любой совет, почему заглушка неэффективна?
Spring Boot 2.0.5, Mockito 2.22.0