Mocking Static Methods

@Pure.Krome: good response but I will add a few details

@Kevin: You have to choose a solution depending on the changes that you can bring to the code.
If you can change it, some dependency injection make the code more testable.
If you can’t, you need a good isolation.
With free mocking framework (Moq, RhinoMocks, NMock…) you can only mock delegates, interfaces and virtual methods. So, for static, sealed and non-virtual methods you have 3 solutions:

  • TypeMock Isolator (can mock everything but it’s expensive)
  • JustMock of Telerik (new comer, less expensive but still not
    free)
  • Moles of Microsoft (the only free solution for isolation)

I recommend Moles, because it’s free, efficient and use lambda expressions like Moq. Just one important detail: Moles provide stubs, not mocks. So you may still use Moq for interface and delegates 😉

Mock: a class that implements an interface and allows the ability to dynamically set the values to return/exceptions to throw from particular methods and provides the ability to check if particular methods have been called/not called.
Stub: Like a mock class, except that it doesn’t provide the ability to verify that methods have been called/not called.

Leave a Comment