我使用的是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
物化器是什么--我假设它是Akka-HTTP的一部分
我怎么能提供一个?
4条答案
按热度按时间628mspwn1#
从 akka 溪docs:
Materializer是流执行引擎的工厂,它是使流运行的东西[...]
Materializer
是Akka Streams的基石,Akka HTTP就是建立在它上面的。你需要隐式解析其中的一个来编译你的测试。目前
ActorMaterializer
是Materializer
唯一可用的实现。它是基于Akka演员的Materializer
。这就是为什么要创建一个Materializer
,你需要在作用域中有一个ActorSystem
。下面的代码是您在测试中所需要的:
xwbd5t1u2#
还有一个status方法,其形式为:
确保控制器返回类型正确,以便操作返回
Future[Result]
zu0ti5jz3#
这样做怎么样:
i7uaboj44#
从Play 2.6.0开始,
ActorMaterializer()
已被弃用,但您可以这样做: