如何使用 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 文档示例包含正确的导入,它真的会有所帮助。
在指向文档之前,请指出这个最小的失败示例有什么问题:
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 文档示例包含正确的导入,它真的会有所帮助。