作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用Spray开发一个简单的测试规范,但无法正确编译它,也不知道我做错了什么。我的scala版本是2.9.3,喷涂版本1.0.1(更新这两个都不是合适的选择)。这是我的测试规范的代码:
import org.specs2.mutable.Specification
import spray.testkit.Specs2RouteTest
import spray.http._
import akka.util.Duration
import java.util.concurrent.TimeUnit
import service.MyProxy
abstract class MyTestSpec extends Specification with Specs2RouteTest with MyProxy{
val duration = Duration(30, TimeUnit.SECONDS)
implicit val routeTestTimeout = RouteTestTimeout(duration)
"MyProxy" should {
"return a json for GET requests to the /api/getclass/classCode path for a regular request" in {
Get("/api/getclass/123/") ~> myRoutes~> check {
responseAs[String] must contain("classCode")
contentType === ContentTypes.`application/json`
}
}
} // end should...
} //end class
[error] C:\Users\Desktop\Project\MyTestSpec.scala:23: could not find implicit value for parameter ta: MyProxySpec.this.TildeArrow[spray.routing.RequestContext,Unit]
[error] Get("/api/getclass/123/") ~> myRoutes~> check {
[error] ^
[error] one error found
[error] (test:compile) Compilation failed
最佳答案
我只是为这个问题而苦苦挣扎。为了弄清楚,我深入了Akka HTTP代码库,它是implicit
的丛林。
我的问题似乎是,如果没有正确的辅助implicit
,就找不到正确的TildeArrow
实例。如果您查看代码,则错误消息中所需的TildeArrow
实例在伴随对象中被定义为implicit def injectIntoRoute
,并且需要整个其他implicit
主机。
我建议写出没有任何隐含糖的代码。这应该更好地帮助编译器为您提供正确的错误消息:
"MyProxy" should {
"return a json for GET requests to the /api/getclass/classCode path for a regular request" in {
val request = Get("/api/getclass/123/")
val requestWithRoutes = request.~>(myRoutes)(TildeArrow.injectIntoRoute)
requestWithRoutes.~>(check {
responseAs[String] must contain("classCode")
contentType === ContentTypes.`application/json`
})
}
}
implicit
的具体实例,因此编译器正在尝试使用
abstract class TildeArrow
满足隐式分辨率,而完全未指定的抽象
type
,
ta.Out
没有
~>
定义的。
ExecutionContextExecutor
。
implicit def ec: ExecutionContextExecutor
,但是
trait RouteTest
将其名称定义为
executor
,因此当我定义自己的名称以实现缺少的隐式时,我最后得到两个相同的隐式。
关于scala - 如何在测试规范中修复参数ta缺少的隐式值:TildeArrow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28324230/
我是一名优秀的程序员,十分优秀!