Fakes, Mocks, and Stubs, What’s the Difference?

It doesn’t take much unit testing before you come across a dependency in the class you are testing for another object. Hopefully your classes are loosely coupled and you are able to make a substitution for this other object. It seems most people call these substitute objects mocks but a mock is a specific thing. According to Martin Fowler there are 4 types of substitution:

  • Dummy – An object that is never actually used, just required to fill out the parameter list.
  • Fake – An object with just enough of a working implementation to substitute.
  • Stub - An object that can provide canned answers to member calls and, optionally, record the calls for later interrogation.
  • Mock – An object that is programmed with a set of expectations of which calls will be made, in what order with what parameters. It is the expectation that is tested after the code has been exercised.
Previous
Previous

DI with Ninject for an MVC project

Next
Next

Entity Classes, IDs and Equality