如何测试演员?由于调用不是同步的,一条消息会导致发送多条消息,那么测试的方法有哪些呢?
例如,我如何测试我的演员发送了 3 条消息以响应另一条消息?
一般来说,除非它与您在构造或输入消息中提供的特征或接口交互,否则您无法测试参与者所做的事情。所以如果你有一个像下面这样的演员。
actor MyActor
be do_stuff(receiver: MyReceiver)
您可以使用一种模式,在该模式中,您将计时器、超时和包装器参与者组合在一起,MyReceiver
以测试参与者是否确实发送了预期的消息或消息序列。
Pony 已经包含了ponytest
一些支持这种测试的包。您可以在 GitHub 上查看PonyTest 演员。基本上,您必须指定一个超时并确保您的一个演员调用complete
测试助手中的成功。请注意,自上一个稳定版本以来,API 发生了变化。