In the TDD there is two concept: fake objects and mock objects. These two concepts are used in case a class you want to test is interacting with other classes or objects or databases...
My question is : what is the difference between the two? and when can I use each one of them?
Edit: I found this answer: What's the difference between faking, mocking, and stubbing?
But I'm still confused about the difference between the two: both of them create implementation of the components, with light implementation for a Fake. But, what do they mean by "light implementation" of "shortcut" in case of a fake? And what is the difference between how a Mock object works, and the real object work?