我使用Play 2.6.x并且status(result)
的测试帮助程序使用方法:
def status(of: Accumulator[ByteString, Result])(implicit timeout: Timeout, mat: Materializer): Int = status(of.run())
当编译器无法找到隐含值时,会运行测试:
could not find implicit value for parameter mat: akka.stream.Materializer
什么是Materializer - 我假设它是Akka-HTTP的一部分
我怎样才能提供一个?
答案 0 :(得分:3)
来自akka streams https://stackoverflow.com/a/36196948/2733350:
Materializer是流执行引擎的工厂,它是 让溪流运行的东西
Materializer
是Akka Streams的基石,其上构建了Akka HTTP。您需要隐式解析其中一个以使您的测试编译。
目前ActorMaterializer
是唯一可用的Materializer
实现。它是基于Akka docs的Materializer
。这就是为什么要创建一个,你需要在范围内有ActorSystem
。
以下代码是您在测试中所需的代码:
implicit val sys = ActorSystem("MyTest")
implicit val mat = ActorMaterializer()
答案 1 :(得分:2)
表格中还有一种状态方法:
def status(of: Future[Result])(implicit timeout: Timeout): Int
确保控制器返回类型正确,以便操作返回Future[Result]
答案 2 :(得分:1)
这样做:
implicit val materializer = ActorMaterializer()