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)
}
}