Calling the original method from shim method

Viewed 4393

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

  1. To be able to capture and validate the argument values being passed to a particular method.
  2. 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.

1 Answers
Related