Fakes creates stubs for every unsealed class in the assembly, and stubs every method that can be overridden. Stubs are purely inheritance based, with no magic involved. If MyMethod
was able to be stubbed, it would appear as a delegate property named MyMethodParamType1ParamType2
.
If you want to override something that normal code cannot override, you require shims. Shims use some kind of obscure magic to modify the IL at runtime and replace methods with delegates. Generally, their use implies a possible weakness in your code, but may be fine with you regardless.
I personally would suggest using an interface if the type really needs to be independent from it's contract, which your problem implies.