You are faking the get part of the property and not the set part:
Add this line to fake both.
Isolate.WhenCalled(() => wrap.baseAttach = null ).CallOriginal();
I understand that this is not intuitive. Here are some ideas that we are thinking about.
1. Fake Properties will act as if they are simple properties
2. WhenCalled(()=>wrap.baseAttach).CallOriginal(); will handle both set and get
3. WhenCalled(()=>wrap.baseAttach).WillReturn(1); will fake sets and always return 1
4. Verify.WasCalled(()=>wrap.baseAttach) for gets
5. Verify.WasSet(()=>wrap.baseAttach).To(5)
What do you think?