@Test
public void lazy_method()
{
LazyService service = mockLazyService();
Greeter greeter = new Greeter()
{
public String getGreeting()
{
return "Hello!";
}
};
replay();
LazyService advised = advise(service);
Greeter thunk = advised.createGreeter();
assertEquals(thunk.toString(),
"<org.apache.tapestry5.ioc.Greeter Thunk for org.apache.tapestry5.ioc.internal.services.LazyService.createGreeter()>");
verify();
expect(service.createGreeter()).andReturn(greeter);
// Prove that the lazy method is only invoked once.
replay();
for (int i = 0; i < 2; i++)
assertEquals(thunk.getGreeting(), "Hello!");
verify();
}