2017-05-18 6 views
0

나는 ScalaMock으로 놀고있었습니다. 저는 스칼라 모크 (ScalaMock)를 사용하여 테스트 케이스에서 객체를 조롱하려고 할 때 직면하는 오류의 KISS 버전을 작성했습니다.scalamock newexpectationexception - [scala, scalamock, akka-http]

import akka.http.scaladsl.server.Route 
import org.scalamock.scalatest.MockFactory 
import org.scalatest.FlatSpec 
import akka.http.scaladsl.testkit.ScalatestRouteTest 
import akka.http.scaladsl.server.Directives._ 
import org.scalatest.Matchers._ 

trait MetricsRegistry { 
    def recordValue(myString: String): Unit 
    def decatMyString(myString: String): Unit 
} 



class ScalaMockError01Spec extends FlatSpec with MockFactory with ScalatestRouteTest { 

def actorRefFactory = system 
    lazy val metricsRegistry = mock[MetricsRegistry] 

    val route : Route = { 
    get{ 
     complete("Status is OK") 
    } 
    } 

    "MetricDirectives" should "record latency and success count for 200 response" in { 
    inAnyOrder { 
     (metricsRegistry.recordValue _).expects(*).twice 

    } 

    Get("/success") ~> route ~> check { 
     status.toString() shouldBe "200 OK" 
    } 
    } 
} 

다음과 같이 내가 점점 오전 오류는

신청이 만족되지 않음 기대 :

예상 : inAnyOrder {inAnyOrder { MetricsRegistry.recordValue (*)를 두 번 (호출되지 않습니다 -이 만족스럽지 못한)}}

실제 : ScalaTestFailureLocation : ScalaMockError01Spec (ScalaMockError01Spec.scala 22)에 org.sc alatest.exceptions.TestFailedException : 불만족 기대 :

예상 : inAnyOrder {inAnyOrder { MetricsRegistry.recordValue (*)를 두 번 (호출되지 않습니다 -이 만족스럽지 못한)}}

실제 : org.scalamock.scalatest.AbstractMockFactory에서 ScalaMockError01Spec.newExpectationException에서 (ScalaMockError01Spec.scala : 22) : ScalaMockError01Spec.newExpectationException (22 ScalaMockError01Spec.scala)에서 : $ class.newExpectationException (51 AbstractMockFactory.scala) org.scalamock.context.MockContext의 $ 클래스 에서. reportU org.scalamock.MockFactoryBase $으로 클래스에서 : org.scalamock.MockFactoryBase $ class.verifyExpectations (108 MockFactoryBase.scala)에서 : ScalaMockError01Spec.reportUnsatisfiedExpectation에서 (22 ScalaMockError01Spec.scala) nsatisfiedExpectation (45 MockContext.scala) ScalaMockError01Spec.withFixture에서 (ScalaMockError01Spec : org.scalamock.scalatest.AbstractMockFactory $ class.withFixture (34 AbstractMockFactory.scala)에서 : ScalaMockError01Spec.withExpectations (22 ScalaMockError01Spec.scala)에서 : .withExpectations (56 MockFactoryBase.scala) .scala : 22) at org.scalatest.FlatSpecLike $ class.invokeWithFi xture $ 1 (FlatSpecLike.scala : 1679) org.scalatest.FlatSpecLike $$ anonfun $ runTest $ 1.apply (FlatSpecLike.scala : 1692)에서 org.scalatest.FlatSpecLike $$ anonfun $ runTest $ 1.apply에서 (FlatSpecLike .scala : 1692) org.scalatest.SuperEngine.runTestImpl (Engine.scala에서 : org.scalatest.FlatSpecLike $ class.runTest (FlatSpecLike.scala에서 289) : org.scalatest.FlatSpec.runTest에서 1692) (FlatSpec .scala : 1685) org.scalatest.FlatSpecLike $$ anonfun $ runTests $ 1.apply (FlatSpecLike.scala에서 : 1750) org.scalatest.FlatSpecLike $$ anonfun $ runTests $ 1.apply (FlatSpecLike.scala에서 : 1750) at org.scalatest.SuperEngine $$ anonfun $ traverseSubNodes $ 1 $ 1.apply (엔진. 384) scala.collection.immutable.List.foreach에서 (List.scala : 381) 조직에서 org.scalatest.SuperEngine $$ anonfun $ traverseSubNodes $ 1 $ 1.apply (Engine.scala에서 396) 스칼라. org.scalatest.SuperEngine $$ anonfun $ traverseSubNodes $을 1 : org.scalatest.SuperEngine.org $ scalatest $ SuperEngine $$ runTestsInBranch (373 Engine.scala)에서 : scalatest.SuperEngine.traverseSubNodes $ 1 (384 Engine.scala) $ 1.apply (Engine.scala : 410) at org.scalatest.SuperEngine $$ anonfun $ traverseSubNodes $ 1 $ 1.Apply (Engine.scala : 384) scala.collection.immutable.List.foreach에서 (List.scala : 381) org.scalatest.SuperEngine.traverseSubNodes $ 1 (엔진에서. 규모 : 384) org.scalatest.SuperEngine.org $ ScalaTest $ superengine $$ runTestsInBranch (Engine.scala에서 : org.scalatest.FlatSpecLike에서 461) : 379) org.scalatest.SuperEngine.runTestsImpl (Engine.scala에서 org.scalatest에서 : org.scalatest.Suite $ class.run (1147 Suite.scala)에서 : org.scalatest.FlatSpec.runTests (1685 FlatSpec.scala)에서 : $ class.runTests (1750 FlatSpecLike.scala) .FlatSpec.org $ ScalaTest FlatSpecLike $$ $ $ 슈퍼 실행 (FlatSpec.scala : 1685) org.scalatest.FlatSpecLike $ $$ anonfun 실행 $ 1.Apply (FlatSpecLik에서 e.scala 일 : 1795) org.scalatest.FlatSpecLike $ $$ anonfun $ 1.Apply (FlatSpecLike.scala 실행 org.scalatest에서 521) : org.scalatest.SuperEngine.runImpl (Engine.scala에서 1795) 를 .FlatSpecLike $의 class.run (FlatSpecLike.scala : 1795) : org.scalatest.BeforeAndAfterAll $ class.liftedTree1 $을 1 (BeforeAndAfterAll ScalaMockError01Spec.org $ ScalaTest BeforeAndAfterAll $$ $ $ 슈퍼 런 (22 ScalaMockError01Spec.scala)에서. 배율 : 213) org.scalatest.BeforeAndAfterAll $의 class.run (BeforeAndAfterAll.scala에서 : org.scalatest.tools.SuiteRunner.run 22) (SuiteRunner.scala 210) ScalaMockError01Spec.run (ScalaMockError01Spec.scala에서 : org.scalatest.tools 45). 러너 $$ anonfun $ doRunRunRunDaDoRunRun $ 1.Apply scala.collection.immutable.List에서 : org.scalatest.tools.Runner $$ anonfun $ doRunRunRunDaDoRunRun $ 1.Apply (1334 Runner.scala)에서 (Runner.scala 1340) .foreach (List.scala 381) org.scalatest.tools.Runner $ .doRunRunRunDaDoRunRun (Runner.scala : 1,334)에 org.scalatest.tools.Runner $$ anonfun $ runOptionallyWithPassFailReporter $ 2.Apply에서 (Runner.scala : 1011) org.scalatest.tools.Runner anonfun $$ $ $ runOptionallyWithPassFailReporter 2.Apply (Runner.scala에서 : 1500) : org.scalatest.tools.Runner $ .withClassLoaderAndDispatchReporter (Runner.scala에서 1010) org.scalatest.tools.Runner $ .runOptiona llyWithPassFailReporter (Runner.scala : 1,010) org.scalatest.tools.Runner $ .RUN (Runner.scala 850)에서 org.scalatest.tools.Runner.run (Runner.scala)에서 org.jetbrains.plugins에서 .scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2 org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main (ScalaTestRunner.java:28)에서 (ScalaTestRunner.java:138)

내가 월 나는 오류가있는 이유 알아?

감사

답변

0

바보, 내가 조롱 기능

metricsRegistry.recordValue

("내 이름은 BILLA이에게")를 호출 할 필요가