如何解决Akka teskit.spawn返回ActorSystem
我正在使用Akka类型的AkkaTestFramework,但找不到为我的一个类型的Actor创建ActorSystem模拟的方法。
我是这样找到的
val pinger: ActorRefTyped[ItAssetRequest] = testKit.spawn(ItAsset(),"itAssetMock")
但是这个ActorRefTyped
不包含schedule
,我在班级内部需要使用ask pattern
在我收到该ActorSystem的班上
class RegisterConsumerStream(itAsset: ActorSystemTyped[ItAssetRequest]){
implicit val schedule: typed.Scheduler = itAsset.scheduler
itAsset ? (ref => ItAssetRequest(connectorState,ref)
}
如果我通过ActorRefTyped[ItAssetRequest]
,则没有时间表,因此我无法使用Ask模式,因为它需要隐式的时间表。
有什么主意吗?
解决方法
您正在使用testKit.spawn方法而非ActorSystem创建Actor。使用Akka TestKit,您已经可以在测试中使用ActorSystem:
class AgentSpec extends ScalaTestWithActorTestKit {
val testKitScheduler : Scheduler = system.scheduler
}
使用testKit中的spawn方法,您可以创建角色来测试您的行为,而不是角色系统。
class RegisterConsumerStream(as: ActorSystem[Nothing]){
import akka.actor.typed.scaladsl.AskPattern._
implicit val scheduler = as.scheduler
val ref: ActorRef[ItAssetRequest] = ???
ref.ask(ref => ItAssetRequest())
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。