0
我试图嘲弄像ScalaMock成株使用默认参数
def foo(x: A, y: B, z: C = blah)
其中嗒嗒的是,我不想当场创建
然而,当我尝试一个java连接对象的函数与替代存根像
(object.foo _)
.stubs(a, b)
它出现了错误,并表示重载的方法存根值... 因为它寻找第三个参数。无论如何要解决这个问题。
我试图嘲弄像ScalaMock成株使用默认参数
def foo(x: A, y: B, z: C = blah)
其中嗒嗒的是,我不想当场创建
然而,当我尝试一个java连接对象的函数与替代存根像
(object.foo _)
.stubs(a, b)
它出现了错误,并表示重载的方法存根值... 因为它寻找第三个参数。无论如何要解决这个问题。
我同意马特,但要指出的存在ScalaMock通配符语法(*) - http://scalamock.org/user-guide/matching/
trait Foo {
def foo(x: Int, y: Int, z: Int = 0): Int
}
val a: Int = ???
val b: Int = ???
val m = mock[Foo]
m.foo _ stubs(a, b, *)
当您将方法剔除时,可以使用通配符。
下测试通过,我想是你在找什么:
class DefaultParameterTest extends FlatSpec with Matchers with MockFactory {
class A {
def foo(x: Int, y: Int, z: Int = 0): Int = 0
}
it should "work with a default parameter" in {
val bar = mock[A]
(bar.foo _).stubs(1, 2, _: Int).returning(5)
bar.foo _ expects(1, 2, 0) returning 5 once()
bar.foo(1, 2)
}
}