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