首页 > 解决方案 > 如何使用 BehaviorTestKit 测试 MessageAdapter 效果

问题描述

我正在尝试使用BehaviorTestKit来测试我的行为和行为调用的创建

val ackMapper: ActorRef[Ack] = context.messageAdapter(x => EventAck(x.id))

这导致MessageAdapterEffect. 但是,我似乎无法找到一种方法来创建一个MessageAdapterEffect满足expectEffect

testKit.expectEffect(MessageAdapter[Ack, EventAck](classOf[Ack], ack => EventAck(ack.id)))

导致类型不匹配,因为 lambda 虽然在功能上是等效的,但它是一个不同的实例。我也不能访问在行为内部创建的 lambda,因为它隐藏在创建行为的闭包中。

expectEffect工作的意义是什么MessageAdapter

标签: scalaakkaakka-typed

解决方案


原来我忽略了BehaviorTestKit.expectEffectPF(),它可以用来匹配MessageAdapter这样的:

testKit.expectEffectPF {
    case MessageAdapter(clazz, _) if clazz == classOf[Ack] =>
}

虽然,由于类型擦除,我想不出一种方法来验证的第二个类型参数MessageAdapter[A,T]


推荐阅读