给定一个带有Java 参数的方法,例如
view = Browse.as_view()
return view(request)
当存根/模拟foo时,如何告诉它接受任何参数并返回它? ( Groovy的)
public class Foo {
public Bar theBar(Bar bar) { /*... */ }
}
如您所见,我通过了身份功能。但是我不知道要传递什么作为参数。 def fooStub = Stub(Foo) {
theBar(/*what to pass here*/) >> { x -> x }
}
不起作用,因为它是_
,因此不属于ArrayList
答案 0 :(得分:7)
您可以通过以下方式存根Foo
课程:
Foo foo = Stub(Foo)
foo.theBar(_ as Bar) >> { Bar bar -> bar }
以下是完整的例子:
import groovy.transform.Immutable
import spock.lang.Specification
class StubbingSpec extends Specification {
def "stub that returns passed parameter"() {
given:
Foo foo = Stub(Foo)
foo.theBar(_ as Bar) >> { Bar bar -> bar }
when:
def result = foo.theBar(new Bar(10))
then:
result.id == 10
}
static class Foo {
Bar theBar(Bar bar) {
return null
}
}
@Immutable
static class Bar {
Integer id
}
}
答案 1 :(得分:0)
我不确定你的意思。 _
是正确的。为什么你认为它是ArrayList
?它的类型为Object
,可以用于任何事情。