Ich habe den folgenden Service kompilieren:Spray.io: Kann nicht Test spec
trait PingService extends MyHttpService {
val pingRoutes =
path("ping") {
get {
complete("message" -> "pong")
}
}
}
MyHttpService
ist eine benutzerdefinierte Klasse, die HttpService
erweitert und enthält nur Utility-Methoden.
Dies ist die Testspezifikation:
import akka.actor.ActorRefFactory
import org.json4s.{DefaultFormats, Formats}
import org.scalatest.{FreeSpec, Matchers}
import spray.testkit.ScalatestRouteTest
class PingServiceSpec extends FreeSpec with PingService with ScalatestRouteTest with Matchers {
override implicit def actorRefFactory: ActorRefFactory = system
override implicit def json4sFormats: Formats = DefaultFormats
"Ping service" - {
"when calling GET /ping" - {
"should return 'pong'" in {
Get("/ping") ~> pingRoutes ~> check {
status should equal(200)
entity.asString should contain("pong")
}
}
}
}
}
Jedes Mal, wenn ich versuche, die Tests auszuführen, erhalte ich die folgende Fehlermeldung:
could not find implicit value for parameter ta: PingServiceSpec.this.TildeArrow[spray.routing.RequestContext,Unit]
Get("/ping") ~> userRoutes ~> check {
^
Mache ich etwas dumm? Jede Art von Hilfe wird geschätzt!
EDIT: Obwohl dies wie ein Betrüger von this question aussehen könnte, ist es nicht.
Die in diesem Post angebotene Lösung funktioniert nicht.
Dies löste das Problem! Vielen Dank! –
Haben Sie etwas dagegen zu erklären? :( – Observer
Der obige Fehler tritt als Konsequenz aus einer impliziten Mehrdeutigkeit auf, weil Sie zwei implizite 'ActorRefFactory' im Geltungsbereich haben. Die aus dem [' ScalatestRouteTest'] (http://spray.io/documentation/1.1-SNAPSHOT/ api/index.html # spray.testkit.RouteTest) die 'PingServiceSpec' basiert auf und die explizit als' actorRefFactory' deklarierte. – edi