如何使用 ScalaMock 模拟对特征的方法调用?

How can you mock a method call on a trait with ScalaMock?

在指向文档之前,请指出这个最小的失败示例有什么问题:

import org.scalatest.FlatSpec
import org.scalamock.scalatest.proxy.MockFactory

class StubbingTest extends FlatSpec with MockFactory {
  trait Foo {
    def f(x: Int): Int
  }

  "foo" should "stub" in {
    val foo = stub[Foo]

    (foo.f _).when(3).returns(4)

    assert(foo.f(3) == 4)
  }
}

这导致第 11 行的 java.lang.NoSuchMethodException: com.sun.proxy.$Proxy4.mock$f[=11=]()(foo.f _).when ...

根据文档,这应该有效。我在这里错过了什么?

我在浏览 Scaladoc 时完全靠运气弄明白了:

改变

import org.scalamock.scalatest.proxy.MockFactory

import org.scalamock.scalatest.MockFactory

我的 IDE 的自动导入失败了,但如果 ScalaMock 文档示例包含正确的导入,它真的会有所帮助。