Ideally, a unit test should test one microfeature and nothing else. However, in object-oriented programming (OOP), objects talk to each other, exchange data, and react to the changes of their neighbors. As a result, when writing a test, it is often difficult to isolate one specific module from another. Without isolation, a test does not test just one microfeature, but many.
To isolate modules from each other, we can use a concept called fake objects. Fake objects act as placeholders for real objects or modules, but they are controlled by test code. This means a test sets up fake objects, controls their behavior, and tests whether the system under the test reacts as expected.
The most important fake objects are mocks, stubs, and ...