我的班级Foo
有一个方法Bar makeBar(String id)
。您可以猜测,makeBar
会创建一个标识为Bar
的新id
对象。 Bar
有id
的吸气剂。
为了我的测试,我需要模仿Foo
。我希望模拟的makeBar
方法创建模拟的Bar
对象,其中getter返回正确的id
(赋予makeBar
的那个)。
所以要清楚,我想创建一个foo
的模拟实例Foo
,以便
foo.makeBar(someId)
返回
的模拟Bar
对象bar
bar.getId() == someID
有没有办法用Spock做到这一点,还是应该把所有东西都存根?
答案 0 :(得分:4)
是的,有可能让模拟返回其他模拟。这样就可以了:
Foo foo = Mock()
foo.makeBar(_) >> { String id ->
Bar bar = Mock()
bar.getId() >> id
bar
}
我在这里发布了完整且可运行的代码:http://webconsole.spockframework.org/?id=40001。