다음 코드 "MockFunction1이 StubFunction1 캐스트 할 수없는"제공 :ScalaMock는
import org.scalamock.scalatest.MockFactory
import org.scalatest.FlatSpec
trait SomeTrait {
def getLongByInt(int: Int): Long
}
class TestScalaMock extends FlatSpec with MockFactory {
"Scala Mock" should "mock my trait" in {
val someTrait = mock[SomeTrait]
(someTrait.getLongByInt _) when (1) returns 2L
assert(2L == someTrait.getLongByInt(1))
}
}
나에게 런타임 오류 org.scalamock.MockFunction1 cannot be cast to org.scalamock.StubFunction1
를 제공합니다. 프로젝트 종속성은 다음과 같습니다.
scalaVersion := "2.11.0"
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-actor" % "2.3.7",
"com.typesafe.akka" %% "akka-testkit" % "2.3.7",
"org.scalatest" % "scalatest_2.11" % "2.2.1" % "test",
"org.scalamock" %% "scalamock-scalatest-support" % "3.2" % "test"
)
아이디어가 있습니까? 감사!
에는 하나가 아닌 두 개의 다른 객체가있는 것이 이상하게 보입니다. 언뜻 보면 '모의 (mock)'는 쓰기 전용으로 보인다. 내가 왜이게 있는지 놓치고 있니? – simbo1905
죄송 합니다만, "쓰기 전용"의 의미를 이해하지 못하셨습니까? 하나의 유형의 가짜 객체가 조롱 스타일을 모두 지원하도록하는 방법이 있다면, 나는 그것을 듣고 싶지만, 이것이 지금 어떻게 달성 될 수 있는지 분명하지 않습니다. –
이 유형의 문제가 런타임이 아닌 컴파일 타임에 잡힐 수있는 방법이 있다면 좋을 것입니다. 하지만 컴파일 타임 타입의 'mock [SomeTrait]'와 'Stub [SomeTrait]'는 SomeTrait가되어야합니다. 그렇지 않다면 ScalaMock은 조롱 한 프레임 워크가해야하는 일을하지 않을 것입니다. 그러나 ScalaMock 프레임 워크가 런타임에서 프로그래머가이 실수를 한 다음 예외 메시지에 유용한 제안을 할 때이를 식별 할 수 있는지 궁금합니다. –