У меня есть настроенный spring-boot-starter, который будет вызывать некоторые REST API, когда он получает событие приложения spring ApplicationReadyEvent
, поэтому класс конфигурации выглядит примерно так:
@Configuration
public class MySpringBootStarter {
@EventListener(ApplicationReadyEvent.class)
public void init() {
// Call REST APIs here
}
}
Затем я хотите протестировать стартер, используя MockServer
, что требует определенных ожиданий до запуска теста. Тестовый класс может выглядеть следующим образом:
@ExtendWith(MockServerExtension.class)
@SpringBootTest
@ContextConfiguration
@MockServerSettings(ports = {28787, 28888})
public class MySpringBootStarterTest {
private MockServerClient client;
@BeforeEach
public void beforeEachLifecycleMethod(MockServerClient client) {
this.client = client;
//creating expectations here
}
@Test
void shouldBeTrue() {
assertThat(true).isTrue();
}
@SpringBootApplication
static class MyTest {
public void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
}
Но на самом деле ожидания всегда создаются после того, как ApplicationReadyEvent
, то есть метод init
класса MySpringBootStarter
вызывается до того, как метод beforeEachLifecycleMethod
в классе MySpringBootStarterTest
.
Как я могу заставить тест работать, пожалуйста?