I'll see if I can summarize (real code is daunting legacy code):
//Arrange
Foo fake = Isolate.Fake.Instance<Foo>();
Isolate.Swap.NextInstance<Foo>().With(fake);
Isolate.WhenCalled(() => fake.MethodUnderTest()).CallOriginal();
// target actually ends up being a fake!
Foo target = FooFactory.GetFoo();
//remainder of any 'arrange' code
...
//Act (we're calling the *original* method!)
target.MethodUnderTest();
//Assert
...
The MethodUnderTest() method calls 'Update()' a number of times, but because it's fake (because the whole class is fake except the method I'm testing), I don't have to worry about things that happen within it or 'faking' necessary items in those other methods.
To be honest, now that I've discovered this, I'm using it fairly often - I'm primarily testing against fakes explicitly calling the original on the target method.
This works well for maintenance because now if someone adds or removes calls to other methods within my target method - the test doesn't have to be updated...think I'll have to blog that one - but more people read yours - so maybe better that you do...