Colin,
it can help immensely to achieve simpler code in some
cases. You want to have your own stub class that you
manually created, that will be used throughout your test
projects.
instead of creating lots of "whenCalled" on some class
and returning fake values, you simply swap a class
implementation with another.
you can think about it as an evolution of using hand
coded stubs, without needing dependency injection
techniques.
the suck typing feature allows you to only override what
you care about, or to have a class that overrides
methods for many different classes at the same time, in
one place.
@Roy
Get you now, yeah that makes sense. Still think it seems
tricksy enough that it would throw most people. Guess
I'd like the option to be explicit:
You could come back and say thats being too explicit and
could result in fragile overspecified tests, and I
agree...but I would have thought the choice would be
useful.
@Colin
This is a good idea - we are actually planning to enable
doing this through the WhenCalled() entry point:
Isolate.WhenCalled(() => x.Talk()).Do(() =>
y.Walk()); // or something along these lines.
This in addition to the entire object duck type swapping
Roy showed above - it's a cool tool for the situations
in which you would like to substitute an entire object.
@Roy
We call the feature Duck-typing, but Suck-typing sounds
like something we could get on the product backlog for
an upcoming release :)