Метод экземпляра запроса Groovy MockFor. вернуть это

Я использую класс Groovy MockFor для тестирования чего-то подобного.

У меня есть AClass с public AClass aMethod(), который должен возвращать какой-то экземпляр AClass. (такой же или нет, это не имеет значения.) В моем фиктивном классе я хочу вернуть точно такой же экземпляр прокси для правильной и простой проверки проверки.

Но не могу найти способ сделать это.

MockFor mock = new MockFor(AClass)
mock.demand.aMethod { ... ->
log.info("aMethod was called!")
    // Here I want to return same mock proxy instance!
    return //<this???>
}

def instance = mock.proxyDelegateInstance()
instance = instance.aMethod(...) // Call to demanded method. In AClass aMethod returns AClass instance!

// so, I will be able to demand aMethod multiple times, and then ask
mock.verify(instance) // Will check, how many times method was called for same instance.

Я думаю, что я могу установить делегат закрытия, а затем потребовать его, но это не выглядело хорошим решением.

Итак, прошу совета.


person Seagull    schedule 21.11.2013    source источник
comment
Я полагаю, вы не можете просто return mock.proxyDelegateInstance()?   -  person tim_yates    schedule 21.11.2013
comment
@tim_yates Но это создаст новый экземпляр, и метод проверки станет бесполезным.   -  person Seagull    schedule 21.11.2013


Ответы (1)


Может быть, это?

def mock = new MockFor( AClass )
def instance

mock.demand.aMethod { a ->
    println "Mocked $a"
    instance
}

instance = mock.proxyDelegateInstance()
instance = instance.aMethod( 'woo' )
person tim_yates    schedule 21.11.2013
comment
Спасибо за помощь, но нет. Существует два способа вызова требуемого метода. Оберните некоторый код с помощью mock.use или создайте экземпляр, а затем вызовите метод напрямую. В таком случае будут вызываться требуемые методы. И в стандартной семантике ООП я смогу получить доступ к текущему экземпляру с помощью этого ключевого слова. Я спросил о способе имитации такого поведения. - person Seagull; 21.11.2013
comment
@Seagull Хорошо, как насчет этого? - person tim_yates; 21.11.2013
comment
В таком случае экземпляр захватывается из внешнего контекста, поэтому он делает метод зависимым от области видимости. Я подумаю, я исправил проблему. Расширенное сообщение опубликую позже, после тестирования. - person Seagull; 21.11.2013