如何使用mockito模拟dependend traits? 我有两个特点:
trait A {
def a = 1
}
trait B extends A {
def b = {
// do things
a
// do things
}
}
现在,我想测试Trait B.我想验证,A.a()被调用:
class SmallTest extends FunSuite with MockitoSugar {
test("prove, that a gets called") {
val mockA = mock[A]
val b = new B with mockA {} // This won't compile
b.b
verify(mockA).a
}
}
这个例子不会编译。但我怎么会注射"不然我的嘲笑?
答案 0 :(得分:0)
好的,找到了办法。这会奏效。也许有点不方便,如果有很多方法,我必须覆盖...... 在这个例子中,我将方法参数添加到我想要模拟的方法中,以显示重复,这看起来并不是很好。
trait A {
def a(i: Int) = i + 1
}
trait B extends A {
def b(j: Int) = {
// do things
a(j)
// do things
}
}
test("prove, that a gets called") {
val mockA = mock[A]
val b = new B {
override def a(j: Int) = mockA.a(j)
}
b.b(1)
verify(mockA).a(1)
}
答案 1 :(得分:0)
使用间谍将是一个更好的选择。 mockito spy
// the class being spied cannot be final,
// so we cannot do this:
// spy(new B {})
class C extends B
val c = spy(new C)
c.b
verify(c).a