示例:
object Test {
def test = {
doTest
}
protected def doTest = {
// do something
}
}
class MockTest extends WordSpec with Mockito{
"" in {
val t = spy(Test)
// how do i stub out doTest?
}
}
我有一个带有受保护的doTest方法的Test类。如何固定这种受保护的方法?
答案 0 :(得分:1)
我建议将doTest
个软件包设为私有,以便您的对象的客户端无法调用它,但您可以在同一个软件包中对其进行测试。
package com.company.my.foo
object Test {
def test = {
doTest
}
private[foo] def doTest = {
// do something
}
}
和
package com.company.my.foo
class MockTest extends WordSpec with Mockito{
"" in {
val t = spy(Test)
when(t.doTest()).thenReturn("foo")
}
}
答案 1 :(得分:0)
Test
是一个单例(所有Scala对象都是),您可以继承类,但不能对象。因此protected
在这里没有意义 - 你说这个方法只能被子类访问,但是不可能有任何(因为Test
是一个对象)。
根据最适合您需求的选项,您有几种选择。 1)您可以使Test
成为一个类,然后对其进行扩展,或者2)将doTest
的访问级别更改为public
[如果您未指定,则这是Scala中的默认值访问修饰符]