Suppose we are trying to test the following application:
We might be tempted to replace logger and factory with Groovy's built-in mocks, but it turns out that Maps or Expandos are often sufficiently powerful enough in Groovy that we don't need full blown dynamic mocks for this example.
Instead of a mock for logger, we can use an Expando as follows:
Instead of a mock for factory, we can use a simple map as follows:
Here, myObj is the object we want the factory to return, though in general this could be a Closure similar to what we did for the Expando above.
Putting this altogether yields the following complete test: