Работы, как ожидается, для меня, вот код (я должен был исправить свой класс Foo так он будет компилировать, бросая RuntimeException - но вы никогда не увидите это, когда проходит тест):
/* In Groovy 2.4 */
import spock.lang.Specification
class FooTests extends Specification {
def "test that bar always returns true"(){
given: "a mock Foo"
def mockFoo = Mock(Foo)
mockFoo.bar() >>> [true, true, true]
when: "we call bar 3 times"
def result1 = mockFoo.bar()
def result2 = mockFoo.bar()
def result3 = mockFoo.bar()
then: "the result should always be true"
result1 == true
result2 == true
result3 == true
}
}
/* In Java 8: */
class Foo {
boolean bar() {
throw new RuntimeException("should not happen");
}
}
Изменение любого из трех фиксированных значений, возвращаемых в ложь и тест терпит неудачу. Надеюсь, это поможет!
Не могли бы вы предоставить всю спецификацию? – Opal
Ваш образец кода для 'Foo' не является' классом', если вы просто не забыли добавить это здесь. – cjstehno
Почему вы пытались высмеять возвращаемое значение массиву с помощью booleans? Я думаю, это то, что вы хотите: класс Foo { булева бара() {} } недействительных "тест Foo"() { Foo fooInstance = Мок (Foo) fooInstance.bar() >> правда; ожидаем: fooInstance.bar() } – user40369