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 или създайте екземпляр и след това директно извикайте метод. В такъв случай ще бъдат извикани изискваните методи. И в стандартната OOP семантика ще мога да осъществя достъп до текущия екземпляр с тази ключова дума. Питах за начин да имитирам такова поведение. - person Seagull; 21.11.2013
comment
@Seagull Добре, какво ще кажете за това? - person tim_yates; 21.11.2013
comment
В такъв случай екземплярът се улавя от външни контексти, така че прави изискването на метода да зависи от обхвата. Ще помисля, оправих проблема. Ще публикувам разширено съобщение по-късно, след тестване. - person Seagull; 21.11.2013