我再次与喷雾斗争,无法正确设置测试。我查看了类似的问题spray-testkit: could not find implicit value for parameter ta:和official spray template,但无法弄清楚我错过了什么和/或做错了什么。
我的服务非常简单:
trait SimpleService extends HttpService{
val fooRoute = path("foo") {
get {
complete("bar")
}
}
}
我有一个非常简单的测试:
class SimpleServiceTest extends FlatSpec with Matchers with SimpleService with ScalatestRouteTest {
override implicit def actorRefFactory: ActorRefFactory = system
"The service" should "return OK status when getting /foo" in {
Get("/foo") ~> fooRoute ~> check {
status should be(OK)
}
}
}
当我尝试编译时,我收到以下错误:
Error:(17, 17) could not find implicit value for parameter ta: SimpleServiceTest.this.TildeArrow[spray.routing.RequestContext,Unit]
Get("/foo") ~> fooRoute ~> check {
^
任何人都可以帮助我并告诉我我错过了什么吗?我没有发现任何异常,我接近评估Play而不是喷雾。
答案 0 :(得分:0)
你应该在ScalatestRouteTest
之前混合SimpleService
,如下:
class SimpleServiceTest extends ScalatestRouteTest with FlatSpec with Matchers with SimpleService
另一种可能的解决方案是将以下行添加到测试抛出Implicit not found的位置:
implicitly[spray.testkit.RouteTestTimeout]
implicitly[spray.routing.RoutingSettings]
implicitly[spray.util.LoggingContext]
查看哪一行抛出,并为该类型提供隐式。
答案 1 :(得分:-1)
ScalatestRouteTest已经提供了一个隐含的ActorySystem。从actorRefFactory方法中删除“隐式”修饰符,测试应该执行。
这为我的代码解决了这个问题