Play Framework 测试助手需要隐式`Materializer`

tgk*_*tgk 4 scala playframework akka-http

我正在使用 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 的一部分

我怎样才能提供一个?

Ste*_*tti 5

来自 akka 流文档

Materializer 是流执行引擎的工厂,它使流运行 [...]

Materializer是阿卡流的基石,其上阿卡HTTP是建立在。您需要隐式解析其中之一才能使您的测试编译。

目前ActorMaterializer是唯一可用的Materializer. 它是一个Materializer基于 Akka 的actor。这就是为什么要创建一个,您又需要有一个ActorSystemin 范围的原因。

以下代码是您在测试中所需要的:

import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
implicit val sys = ActorSystem("MyTest")
implicit val mat = ActorMaterializer()
Run Code Online (Sandbox Code Playgroud)