我正在尝试使用喷涂路线,并希望使用Spray-TestKit进行测试。 我在用 : - Scala 2.10.3 - Akka 2.3.3 - 喷雾1.3.1
我创建了一个扩展HttpService的特征,我定义了一个路径:
trait MyService extends HttpService with CoreAccess {
import greentee.am.endpoint.tsmsp.tsmSPJsonSupport._
val myRoute = {
path("resources"/"ping") {
get {
complete(OK, "pong")
}
}
}
}
我删除了一些不相关的路线。 CoreAccess是一个扩展Actor的特性,因为我在该特征中有方法访问ActorSystem。 (我不知道在没有扩展演员的情况下从特征中检索ActorSelection的人)
然后我创建一个测试规范
import MyService
import org.specs2.mutable.Specification
import spray.testkit.Specs2RouteTest
import spray.http.StatusCodes._
class RegistrationRouteSpecification extends Specification with Specs2RouteTest with MyService {
def actorRefFactory = system
"The EndPoint " should {
"return Pong to a Get request to the ping" in {
Get("/resources/ping") ~> myRoute ~> check {
status === OK
responseAs[String] === "pong"
}
}
}
}
当我尝试执行测试时,出现以下编译错误:
[info] Compiling 1 Scala source to /Users/IdeaProjects/endpoint/target/scala-2.10/test-classes...
[error] /Users/IdeaProjects/endpoint/src/test/scala/RegistrationRouteSpecification.scala:19: could not find implicit value for parameter ta: RegistrationRouteSpecification.this.TildeArrow[spray.routing.RequestContext,Unit]
[error] Get("/resources/ping") ~> myRoute ~> check {
[error] ^
[error] one error found
答案 0 :(得分:1)
我回答我自己的问题。 我更正了我的Build.scala以使用以下行:
val scalaCheck = "org.scalacheck" %% "scalacheck" % Versions.scalaCheckVersion % "test"
val scalaTest = "org.scalatest" %% "scalatest" % "2.2.0" % "test"
而不是使用简单的'%'并提供专用版本。