Test::MockObject allows you to create objects that conform to
particular interfaces with very little code.  You don't have to
reimplement the behavior, just the input and the output.