Я бы хотел получить разные возвращаемые результаты - в зависимости от заданного параметра метода. Пожалуйста, рассмотрите следующий фрагмент кода, чтобы следовать моим намерениям
class ExampleSpec extends Specification {
def "should return second value of list of return values"() {
given:
Person personBob = Mock()
Person personJackson = Mock()
PersonHelper stubbedPerson = Stub()
stubbedPerson.getNameOfBrother(personBob) >> "Billy Bob";
stubbedPerson.getNameOfBrother(personJackson) >> "Tommy Jackson";
when:
String actual = stubbedPerson.getNameOfBrother(personBob)
String actual2 = stubbedPerson.getNameOfBrother(personJackson)
then:
actual == "Billy Bob" // true
actual2 == "Tommy Jackson" // false "Billy Bob"
}
}
Тест не пройден, поскольку второй вызов для var actual2
по-прежнему возвращает Билли Боб , а не Томми Джексон . Я знаю, что есть способ вернуть разные значения по порядку вызовов, но я бы хотел, чтобы он зависел от заданных макетов.
Использование нормальных значений - без Mock / Stub Proxy - поскольку значения параметров действительно работают. Я предполагаю, что двигатель Спока не может отличаться между двумя макетами. Но я не уверен в этом, потому что прокси имеют идентификаторы в качестве полей экземпляра.