While creating shims for members of types in BCLs (or of any library for that matter). We often face a situation where we want to call the original method which we have overidden (be it inside the shim delegate or outside). E.G.:
System.Fakes.ShimDateTime.NowGet = () => DateTime.Now.AddDays(-1);
In the above code, all we want to do when the DateTime.Now is called is to return a day less than the actual date. Maybe this looks like a contrived example so other (more) realistic scenarios are
- To be able to capture and validate the argument values being passed to a particular method.
- To be able to count the number of times a particular method/property is accessed by the code under test.
I faced with the last scenario in a real application and couldn't find an answer for Fakes on SO. However, after digging into Fakes documentation, I have found the answer so posting it along with the question for the community.