我正在测试Akka演员的应用程序。我正在使用测试探针。我想验证探针是否正好收到10个相同类型的消息。一种解决方案可能是写10次:
probe.expectMsg(20 seconds, Done)
但我更喜欢更通用的解决方案(例如我也会测试我的应用程序n = 100)。 我也尝试过probe.receiveN(10,20秒)但是如果我收到超过10个元素,测试不会失败。相反,我希望它在这种情况下失败。有解决方案吗?
答案 0 :(得分:3)
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)