模拟特征的ScalaMock给出"MockFunction1不能转换为StubFunction1"

sim*_*905 2 scala 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))
  }
}
Run Code Online (Sandbox Code Playgroud)

给我一个运行时错误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"
  )
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

Pau*_*her 14

ScalaMock支持两种不同的styes-expectation-first和record-then-verify(Mockito-style).

对于期望优先,用于mock创建假对象并expects设置期望.

对于record-then-verify,用于stub创建虚假对象,when设置返回值和verify验证调用.

在您的代码中,您正在使用mock(期望优先)和when(记录然后验证).expects相反,使用,你应该没事.

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