无法使用 macwire 注入播放 WS 或 WSClient

Mar*_*ark 5 dependency-injection scala playframework-2.0

这是我想要做的

package gc.services.http.playWs.lmi

import com.softwaremill.macwire.Macwire
import play.api.Play.current
import play.api.libs.ws._
import play.api.libs.ws.ning.NingAsyncHttpClientConfigBuilder
import scala.concurrent.Future
import play.api.libs.ws.{WSResponse, WSRequestHolder, WSClient}

import scala.concurrent.Future

class LmiWs extends Macwire{
  val baseUrl = "http://api.lmiforall.org.uk/api/v1"
  //inject plays ws client
  lazy val http = wire[WSClient]

  def getRequestHolder(url: String = baseUrl): WSRequestHolder = {
    http.url(url)
  }

  def get(request: WSRequestHolder): Future[WSResponse] = {
    request.get()
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试 wire[WS] IntelliJ 给出无法解析的符号。上面的 IntelliJ 中没有显示错误,但是在编译时 mac wire throws

找不到 WeakTypeTag 的构造函数[play.api.libs.ws.WSClient]

这个类只是为我想要点击的应用程序定义基本路由,它会针对每个特定路由通过一些不同的类进行扩展。我希望能够模拟 WS 依赖项,这样当我测试这个和后代类时,我可以在不发送实际 HTTP 请求的情况下这样做。

小智 0

也许你可以尝试这个:

  lazy val http: WSClient = WS.client
Run Code Online (Sandbox Code Playgroud)