Why I Don't Like Mocking Frameworks

Disclaimer: By mocking framework I generalize anything that includes support for stubs and mock objects.


The use of mocking frameworks was a difficult part of my TDD journey. Not only are newcomers expected to get their head around the basics of the practice there are now new tools to contend with. To make matters worse there is a lot of mocking frameworks out there with differing quality qualities and suitability.

The use of mocking frameworks includes a variety of disadvantages.

Solution

My preference is to use hand crafted test doubles. While these are looked down upon by some, they offer numerous benefits.

The actual implementation of these hand crafted doubles is minimal. In most cases simply providing the arguments as constructor or method parameters works. For more complicated scenarios DAMP tests can be used.

One area where frameworks provide a benefit is that of mock objects. In non trivial examples the requirements to verify numerous parameters and configurations can be verbose to hand craft. However there are alternatives to hand crafted test doubles such as the self shunt pattern which will be expanded upon in a future post.