1

我正在使用 Akka 演员测试一个应用程序。我正在使用测试探针。我想验证探针是否接收到 10 条相同类型的消息。一种解决方案可能是写 10 次:

probe.expectMsg(20 seconds, Done)

但我更喜欢更通用的解决方案(例如,我也会针对 n=100 测试我的应用程序)。我也试过 probe.receiveN(10, 20 seconds) 但如果我收到超过 10 个元素,测试不会失败。相反,我希望它在这种情况下失败。有解决办法吗?

4

1 回答 1

3

来自Akka 文档:

expectMsgAllOf[T](d: Duration, obj: T*): Seq[T]

必须在给定时间内接收与提供的对象数组大小匹配的多个对象,并且对于每个给定对象,在接收到的对象中必须至少存在一个等于(与 == 相比)它。返回接收到的对象的完整序列。

然后使用expectNoMsg(d: Duration)以确保有所需的数量。

使用您的代码:

val numberOfMessages = 10
probe.expectMsgAllOf(20 seconds, Array.fill(numberOfMessages)(Done))
probe.expectNoMsg(20 seconds)
于 2015-05-21T10:07:05.113 回答