有一个班级InvokeLater
,定义如下:
class InvokeLater {
def apply(f: => Any): Unit = {
// do something ...
f
// do some other thing
}
}
在规格测试中,我嘲笑它:
val invokeLater = mock[InvokeLater]
invokeLater.apply(any) answers { f => f:Unit }
但似乎answers
内的代码永远不会运行。
specs2现在是否支持此功能?
答案 0 :(得分:1)
首先,您需要确保specs2-mock.jar
放在类路径mockito.jar
之前。然后请注意,传递给f
方法的answers
是Function0
。例如
class InvokeLater {
def apply(f: =>Int): Unit = {
// do something ...
f
// do some other thing
}
}
val invokeLater = mock[InvokeLater]
invokeLater.apply(any) answers { f =>
println("got the value "+f.asInstanceOf[Function0[Int]]())
}
invokeLater.apply(1)
打印:
got the value 1