OK, my miss. What happened here is that A.Method() is faked because A is a recursive fake (it was swapped on creation). Because A is faked, A.FileWriter.WriteToFile() was not really called.
The problem is with the wrong exception message. This happens because of another feature related to future instance swapping - on swapping we copy the state of the real instance to the swapped instance, and in this case the swapped instance received the real instance of AFormatFileWriter. This causes a.FileWriter to return a real instance, which is not supported in Verify. I realize this requires a bit to understand, but you portrait a pretty tricky situation altogether - can you show how you would need to verify like that in a real test?
Thanks,
Doron
Typemock Support