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

标签 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 的一部分

我怎样才能提供一个?

最佳答案

来自 akka 流 docs :

The Materializer is a factory for stream execution engines, it is the thing that makes streams run [...]

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

目前,ActorMaterializerMaterializer 唯一可用的实现。它是一个基于 Akka actorsMaterializer 。这就是为什么要创建一个,您又需要在范围内有一个 ActorSystem 的原因。

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

import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
implicit val sys = ActorSystem("MyTest")
implicit val mat = ActorMaterializer()

关于scala - Play Framework 测试助手需要隐式 `Materializer`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48036803/

相关文章:

akka http 客户端跟随重定向

scala - Akka Http - 如何将 ResponseEntity 解码为 CustomClass?

postgresql - 获取自定义光滑配置文件的执行异常

scala - 找不到基本的Play 2.0 WebSocket请求 header

java - Play Framework 2.2 空指针异常ArrayList

java - 如何将二维字符串数组从java代码传递到play框架中的scala.html?

scala - 如何在 Scala 中生成小于某个数的随机整数序列?

scala - 为什么 Option.apply 会为装箱原语抛出 NPE?

java - 使用 DI 时, Play 2.4 在第一次请求时花费更多时间

amazon-web-services - 如何在 AWS Cloudfront 上启用 websocket