1. Sources
    1. Understand Stub, Mock and Fake in Unit Testing
      1. https://www.c-sharpcorner.com/UploadFile/dacca2/understand-stub-mock-and-fake-in-unit-testing/
    2. Test Doubles — Fakes, Mocks and Stubs.
      1. https://www.c-sharpcorner.com/UploadFile/dacca2/understand-stub-mock-and-fake-in-unit-testing/
    3. Test Double
      1. http://xunitpatterns.com/Test%20Double.html
    4. Martin Fowler: Mocks Aren't Stubs
      1. https://martinfowler.com/articles/mocksArentStubs.html
      1. http://www.rubencanton.com/blog/2015/03/difference-between-faking-mocking-and-stubbing.html
    6. What's the difference between faking, mocking, and stubbing?
      1. https://stackoverflow.com/questions/346372/whats-the-difference-between-faking-mocking-and-stubbing
  2. Mock
    1. unit test
      1. A mock object is a fake object in the system that decides whether the unit test has passed or failed
    2. Mocks are objects that register calls they receive.
    3. objects pre-programmed with expectations which form a specification of the calls they are expected to receive
    4. an object on which you set expectations
    5. 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
  3. Stub
    1. unit test
      1. A stub can replace an object in the unit testing world
    2. Stub is an object that holds predefined data and uses it to answer calls during tests
    3. provide canned answers to calls made during the test, usually not responding at all to anything outside what's programmed in for the test
    4. an object that provides predefined answers to method calls
    5. like a mock class, except that it doesn't provide the ability to verify that methods have been called/not called
  4. Fake
    1. unit test
      1. fake is, not real
    2. fakes are objects that have working implementations, but not same as production one
    3. objects actually have working implementations, but usually take some shortcut which makes them not suitable for production
    4. an object with limited capabilities
    5. a class that implements an interface but contains fixed data and no logic