Я хочу протестировать класс типа Example
, который обрабатывает ContextRefreshedEvent
и подключается к серверу в методе обработчика:
public class Example {
@EventListener
public void onApplicationEvent(ContextRefreshedEvent event) {
startWebSocketConnection();
}
// ...
}
Но в интеграционном тесте контекст приложения создается до запуска и запуска сервера веб-сокетов, поэтому я получаю исключение, говорящее о том, что соединение не установлено (java.net.ConnectException: Connection refused: no further information
в данном случае).
Тест выглядит так:
@ExtendWith(SpringExtension.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
public class WebSocketDataSourceTest {
@Autowired
private Example example;
@Autowired
private WebSocketServer server; // created too late
// ...
}
Возможно ли как-то подавить ContextRefreshedEvent
или отложить создание контекста приложения, чтобы сервер веб-сокетов мог запуститься раньше? Или есть другое решение?