【发布时间】:2018-03-18 09:13:53
【问题描述】:
给定一个带有参数的方法在Java中,例如
public class Foo {
public Bar theBar(Bar bar) { /*... */ }
}
当存根/模拟 foo 时,我如何告诉它接受任何参数并返回它? (时髦)
def fooStub = Stub(Foo) {
theBar(/*what to pass here*/) >> { x -> x }
}
如您所见,我通过了身份函数。但是我不知道该传递什么作为论点。 _ 不起作用,因为它是 ArrayList,因此不是 Bar 类型
【问题讨论】:
-
您的规格中有
@CompileStatic或@TypeChecked吗?你能发布你的整个代码吗,_没有理由不工作。 -
刚刚遇到相同的设置和情况。尝试从 Spock + Groovy 存根 Java 类,我只想返回方法的输入,不多不少。由于我不知道发生了什么,我只是将我的解决方案作为评论留下,如果有人能启发我,我将不胜感激。似乎箭头之前的
x输入实际上是方法调用的整个参数列表?执行以下操作可以解决问题:theBar(_) >> { args -> args.get(0) }。但为什么这是必要的?如何在没有任何技巧的情况下正确表达这一点?