У меня есть поток в этой форме:
val server = for {
_ <- Stream.eval(initTasks)
serverBinding <- Stream.eval(...)
} yield serverBinding
Я понимаю, что для его запуска я должен сделать что-то вроде:
server
.compile
.drain
.unsafeRunAsync(_ => ())
Теперь я хочу написатьюнит-тесты для этого сервера, но я могу запускать свои тесты только тогда, когда сервер полностью настроен.В настоящее время в моем блоке beforeAll
у меня есть:
testServer
.interruptWhen(shutdownSignal)
.compile
.drain
.unsafeRunAsync(_ => ())
Thread.sleep(5000)
, а в моем блоке afterAll
у меня есть:
shutdownSignal.set(true).unsafeRunSync()
, чтобы отключить сервер после моего теста.
Мне было интересно, смогу ли я использовать сигналы для достижения поставленной цели, чтобы я мог каким-то образом «подождать» сигнал, чтобы тесты запускались только после подачи сигнала.В качестве альтернативы я хотел бы узнать об общем / идиоматическом способе сделать это.