我在试着模仿一个像
def foo(x: A, y: B, z: C = blah)其中blah是我不想当场创建的java连接对象
然而,当我试图像
(object.foo _)
.stubs(a, b)它出错了,并说重载的方法值存根带有其他选项.因为它在寻找第三个参数。不管怎么说有什么可以绕过这件事的。
发布于 2017-03-24 12:17:18
我同意Matt的观点,但想指出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, *)发布于 2017-03-23 23:33:34
您可以在处理方法时使用通配符。
下面的测试通过了,我认为这就是您要寻找的:
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)
}
}https://stackoverflow.com/questions/42986816
复制相似问题