You're right. You shouldn't use IgnoreCall() on non-void methods.
The fact that this possibility exists is a mistake in our system, and we will fix it as soon as possible.
Meanwhile, in order to prevent ScratchFoot() method from being called you can do this:
var lizard = Lizard.getInstance();
Isolate.NonPublic.WhenCalled(lizard, "tickle").DoInstead(c =>
c.Parameters = null;
That way, when you call tickle(), feather will be null and ScratchFoot() will not be called.