fs2流:测试fs2服务器

时间:2019-01-20 23:48:58

标签: scala stream side-effects fs2

我有这种形式的信息流:

name = ['John', 'Lily']

age = [12, 22]

我知道要运行它,我应该做类似的事情:

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

在测试后关闭服务器。

我想知道我是否可以使用信号来达到我设定的目标,以便我可以以某种方式“等待”信号,以便仅在信号启动后才运行测试。另外,我很想知道这样做的通用/惯用方式。

1 个答案:

答案 0 :(得分:0)

fs2具有称为Promise的结构,可用于此目的。现在为deprecated,但可以使用Cat的Deferred。因此,在流上运行compile.drain之前,我们可以使流完成Promise / Deerred值,然后在beforeAll中等待其值。