Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spray.io: Can't compile test spec

I have the following service:

trait PingService extends MyHttpService {

val pingRoutes =
    path("ping") {
      get {
        complete("message" -> "pong")
      }
    }
}

MyHttpServiceis a custom class that extends HttpServiceand only contains utility methods.

This is the test spec:

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")
        }
      }
    }
  }
}

Whenever I try to run the tests, I get the following error:

could not find implicit value for parameter ta: PingServiceSpec.this.TildeArrow[spray.routing.RequestContext,Unit]

 Get("/ping") ~> userRoutes ~> check {
              ^

Am I doing something stupid? Any kind of help will be appreciated!

EDIT: Although this might look like a dupe of this question, it's not.

The solution provided in that post it's not working.

like image 299
Matteo Pacini Avatar asked Jan 14 '15 11:01

Matteo Pacini


1 Answers

The ScalatestRouteTest already provides an implicit ActorSystem. Remove the implicit modifier from your actorRefFactory method and the test should get executed.

like image 148
edi Avatar answered Sep 17 '22 15:09

edi