Hi tlucz,
What you are describing is a bug which we are already aware of; it happens at the intersection of two features that, when working together, will provide all the functionality you need according to your description.
Recursive Fakes are the default mode of operation when creating fake instances. When a method is called on a recursive fake, its return value is also faked recursively - this means that if it returns a value type (int, string, etc) then a basic value (0, "", etc) will be returned, and if it returns a reference type, it will return a recursive fake. This allows you to completely ignore whole call chains without assigning fake objects explicitly to every step in the chain.
True Properties is a feature that allows values set with property setters to be returned by property getters. This is exactly what you expect to happen in your example, and indeed it's what should happen. The bug here is that True Properties do not work well together with Recursive Fakes - actually, they work only on the first level of the fake (properties called directly from recursive fakes act as true properties), but not on deeper levels.
I will work to resolve this issue and send you a properly working patched version. In the meanwhile, you can replace the Assert statement with a statement on the property getter, with a verify statement that verifies the property setter was called with the correct argument:
Isolate.Verify.WasCalledWithExactArguments(() => presenter.View.LabelAdapter.Text = "2");
Please write back here if this workaround works for you.
Thanks,
Doron
Typemock Support