In a well-architected software system, there are usually objects that interact and coordinate to accomplish set objectives based on the business or automation requirements. Quite often, these objects are complex and rely on other external components or systems, such as databases, SOAP, or REST services for data and internal state updates.
Most developers are beginning to adopt TDD because of the many benefits that practicing it can offer and due to the awareness that it is the responsibility of programmers to write quality code that is bug free and well tested. However, some developers object to mocking objects due to several assumptions. For example, adding mock objects to unit tests increases the total time required to write unit tests. This assumption is false because using mock objects offers several benefits, as explained in the following sections...