2016-12-23 6 views
0

나는 akka.http.scaladsl.testkit.ScalatestRouteTest를 사용하여 간단한 테스트를 만들기 위해 노력하고, 그 결과는 다음과 같습니다akka-http-testkit을 사용하여 테스트를 만드는 방법은 무엇입니까?

class FooRoutesSpec extends FlatSpec with Matchers with ScalatestRouteTest with FooResource { 

    Get(s"/foos/1") ~> fooRoutes ~> check { 
     status shouldBe OK 
    } 
} 

UPDATE의 스택 트레이스

An exception or error caused a run to abort: akka.http.scaladsl.server.RequestContextImpl.<init>(Lakka/http/scaladsl/model/HttpRequest;Lakka/event/LoggingAdapter;Lakka/http/scaladsl/settings/RoutingSettings;Lscala/concurrent/ExecutionContextExecutor;Lakka/stream/Materializer;)V 
java.lang.NoSuchMethodError: akka.http.scaladsl.server.RequestContextImpl.<init>(Lakka/http/scaladsl/model/HttpRequest;Lakka/event/LoggingAdapter;Lakka/http/scaladsl/settings/RoutingSettings;Lscala/concurrent/ExecutionContextExecutor;Lakka/stream/Materializer;)V 
    at akka.http.scaladsl.testkit.RouteTest$TildeArrow$$anon$1.apply(RouteTest.scala:158) 
    at akka.http.scaladsl.testkit.RouteTest$TildeArrow$$anon$1.apply(RouteTest.scala:150) 
    at akka.http.scaladsl.testkit.RouteTest$WithTransformation2.$tilde$greater(RouteTest.scala:125) 
    at routes.foo.MyRoutesSpec$$anonfun$1$$anonfun$apply$mcV$sp$1.apply(MyRoutesSpec.scala:34) 
    at routes.foo.MyRoutesSpec$$anonfun$1$$anonfun$apply$mcV$sp$1.apply(MyRoutesSpec.scala:34) 
    at org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85) 
    at org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104) 
    at org.scalatest.Transformer.apply(Transformer.scala:22) 
    at org.scalatest.Transformer.apply(Transformer.scala:20) 
    at org.scalatest.WordSpecLike$$anon$1.apply(WordSpecLike.scala:1078) 
    at org.scalatest.TestSuite$class.withFixture(TestSuite.scala:196) 
    at org.scalatest.WordSpec.withFixture(WordSpec.scala:1881) 
    at org.scalatest.WordSpecLike$class.invokeWithFixture$1(WordSpecLike.scala:1075) 
    at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:1088) 
    at org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:1088) 
    at org.scalatest.SuperEngine.runTestImpl(Engine.scala:289) 
    at org.scalatest.WordSpecLike$class.runTest(WordSpecLike.scala:1088) 
    at org.scalatest.WordSpec.runTest(WordSpec.scala:1881) 
    at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1147) 
    at org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1147) 
    at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:396) 
    at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384) 
    at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:373) 
    at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:410) 
    at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:384) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384) 
    at org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:379) 
    at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461) 
    at org.scalatest.WordSpecLike$class.runTests(WordSpecLike.scala:1147) 
    at org.scalatest.WordSpec.runTests(WordSpec.scala:1881) 
    at org.scalatest.Suite$class.run(Suite.scala:1147) 
    at org.scalatest.WordSpec.org$scalatest$WordSpecLike$$super$run(WordSpec.scala:1881) 
    at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1192) 
    at org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1192) 
    at org.scalatest.SuperEngine.runImpl(Engine.scala:521) 
    at org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1192) 
    at routes.foo.MyRoutesSpec.org$scalatest$BeforeAndAfterAll$$super$run(MyRoutesSpec.scala:13) 
    at org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:213) 
    at org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:210) 
    at routes.foo.MyRoutesSpec.run(MyRoutesSpec.scala:13) 
    at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:45) 
    at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1340) 
    at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRunRun$1.apply(Runner.scala:1334) 
    at scala.collection.immutable.List.foreach(List.scala:381) 
    at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1334) 
    at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1011) 
    at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1010) 
    at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1500) 
    at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:1010) 
    at org.scalatest.tools.Runner$.run(Runner.scala:850) 
    at org.scalatest.tools.Runner.run(Runner.scala) 
    at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:138) 
    at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

을 build.sbt

libraryDependencies ++= { 
    val Json4sVersion  = "3.2.11" 
    val akkaV  = "2.4.16" 
    val akkaHttpV = "3.0.0-RC1" 
    val scalaTestV = "3.0.1" 
    Seq(
    "com.typesafe.akka" %% "akka-slf4j"     % akkaV, 
    "com.typesafe.akka" %% "akka-http"     % akkaHttpV, 
    "com.typesafe.akka" %% "akka-http-testkit"   % akkaHttpV, 
    "com.typesafe.akka" %% "akka-testkit"    % akkaV, 
    "ch.qos.logback" % "logback-classic"   % "1.1.2", 
    "org.json4s"  %% "json4s-native"    % Json4sVersion, 
    "org.json4s"  %% "json4s-ext"     % Json4sVersion, 
    "de.heikoseeberger" %% "akka-http-json4s"   % "1.4.2", 
    "org.scalatest"  %% "scalatest"     % scalaTestV % "test" 
) 
} 

내가 볼 수는 RequestContextImplRequestContext

package akka.http.impl.server 
    private[http] final case class RequestContextImpl(val underlying : akka.http.scaladsl.server.RequestContext) extends scala.AnyRef with akka.http.javadsl.server.RequestContext 

을 필요로하지만 RequestContext 대신 특성

package akka.http.javadsl.server 
class RequestContex 

방법이 문제를 해결하기 위해 어떤 생각의 종류입니까?

+0

나는 해결책을 가지고,하지만 난 아직도 무슨 일이 일어 났는지 모른다. 'val akkaV = "2.4.5" Seq ( "com.typesafe.akka"%% "akka-slf4j"% akkaV, "com.typesafe.akka"%% "akka-http-core"% akkaV , ' "com.typesafe.akka"%% "akka-http-experimental"% akkaV, "com.typesafe.akka"%% "akka-http-testkit"% akkaV % "test"' – coffee

답변

0

akka-http-json4s는 Akka-HTTP의 이전 버전 (즉, 2.0.1 config에 따라)에 드래그한다. 훨씬 더 최근 akka-http-json4s있다

버전 1.11.0. Akka-HTTP 10.0.0 및 Akka 2.4.14를 사용합니다 (config). 당신의 모든 종속성을 해주

시도 :

val akkaV  = "2.4.14" 
    val akkaHttpV = "10.0.0" 
    val akkaHttpJson= "1.11.0" 

("de.heikoseeberger" %% "akka-http-json4s" % akkaHttpJson에 사용되는 마지막 버전)

+0

내 응용 프로그램은 지금 실행,하지만 내 테스트 내가 스택 트레이스 업데이트되었습니다. 같은 오류가 계속. – coffee

+0

좋아, 당신은 여전히 ​​어딘가에 일부 버전 충돌을 얻었다. 당신이 시도하고'addSbtPlugin을 추가 할 수 있습니다 ("net.virtual-무효"% "SBT-dependency- 당신의'plugins.sbt' 파일로 그래프 "%"0.8.2 ")는'dependencyTree' SBT'실행하고 여기에 결과를 붙여? (이 이러한 경우에 매우 유용한 플러그인, https://github.com에서 자세한 내용입니다/jrudolph/sbt-dependency-graph) –

+0

아니면 그냥'show ext ernalDependencyClasspath'는 SBT – jrudolph