1

我有一个Foo有方法的类Bar makeBar(String id)。你可以猜到,makeBar创建一个Bar带有 id 的新对象idBar有一个吸气剂id

为了我的测试目的,我需要模拟Foo. 我希望模拟makeBar方法创建Bargetter 为其返回正确的模拟对象id(给定的那个makeBar)。


所以要清楚,我想创建一个这样foo的模拟实例Foo

foo.makeBar(someId)

返回一个模拟Bar对象bar

bar.getId() == someID

有没有办法用 Spock 做到这一点,或者我应该把所有东西都存根?

4

1 回答 1

4

是的,一个模拟返回其他模拟是可能的。这可以解决问题:

Foo foo = Mock()

foo.makeBar(_) >> { String id ->
    Bar bar = Mock()
    bar.getId() >> id
    bar
}

我在这里发布了完整且可运行的代码:http ://webconsole.spockframework.org/?id=40001 。

于 2012-01-13T05:14:16.120 回答