Hi Dave,
Swap.NextInstance does not really swap objects. It swaps behaviors. What that means that when a method will be called on the real object in your production code, the method would actually run on the fake one. The difference of how methods will be have is how you built your fake object.
In your case, you create the fakeSDR to be really created with the IDR, but _sdr is created with what DAL.ExecuteReader returns. All methods later will behave as you expect, but the constructor doesn't. It also explains why using WhenCalled return the data reader works- you've initialized the real object as you did the fake one, which succeeds.
We have in our backlog a feature that will do "real" swapping, i.e. reference swapping. We'll let you know when we get there.
As to your breakpoints: this is strange. Area ll breakpoints missed? If you put them inside faked method, they will not be reached, so please make sure you are putting them inside calls that actually run.
Try to disable Isolator (Tools->Disable Isolator) and run the tests again, see if your breakpoints are met.
Thanks,