您好我正在尝试在控制器中测试此功能,我需要模拟“MyActor”进行单元测试。
def populateArraylist[T](hashSet: HashSet[T]): util.ArrayList[T] = {
val list = new util.ArrayList[T]()
hashSet.foreach(x => list.add(x))
list
}
@ApiOperation("Get the state of a something”)
def get(ID: String, dateID: String): Action[AnyContent] = Action.async
{
implicit request =>
(MyShardProvider.shard ? MyActor.EntityPayload(
Id,
MySecondActor.GetStateRequest(dateId)))
.mapTo[GetStateResponse]
.map(x => {
Ok(new String(JacksonSerializer.toBytes(new GetResponse(
x.state.identifier,
populateArraylist(x.data.transactionList.processedKeys)
))))
})
}
答案 0 :(得分:0)
我认为你想要做的是模仿shard
actor,否则你必须在单元测试执行时实际运行集群和分片。
最简单的方法可能是在测试用例中使MyShardProvider.shard
注入或覆盖的内容(取决于您在播放应用中如何进行注入)以提供ActorRef
的{ {1}}而不是。
你有TestProbe
看起来有点可疑,你应该永远不会有一个包含演员系统的单例,而应该注入实例,如播放文档中所示:https://www.playframework.com/documentation/2.6.x/ScalaAkka < / p>