ScalaMock嘲笑一个特质会给"MockFunction1 cannot be cast to StubFunction1"



以下代码:

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

有什么想法吗?谢谢!

ScalaMock 支持两种不同的麦粒肿——期望优先和记录然后验证(Mockito 风格)。

对于期望优先,请使用mock创建假对象,并使用expects来设置期望。

对于先记录然后验证,请使用stub创建假对象,when设置返回值,verify验证调用。

在代码中,您将mock(期望优先)与when(记录然后验证)一起使用。改用expects,你应该没问题。

(注意,您可以在单个测试中混合不同的样式,但不能混合单个假对象)。

相关内容

  • 没有找到相关文章

最新更新