我有一个这种形式的流:
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()
在我的测试后关闭服务器。
我想知道是否可以使用信号来实现我的既定目标,以便我可以以某种方式“等待”信号,以便仅在信号出现时运行测试。或者,我很想知道这样做的通用/惯用方式。