Test Driven Development (TDD) is about developing tests for your application’s functionality before actually writing any code. In this way, your tests guide how you approach implementation.
A mock is a way of stubbing functions/methods that you may or may not have developed yet and providing mock data and results for those functions. In this way, you are able to isolate testing on one defined function that depends on those stubbed out functions. This way, you can isolate any problem to the function you are testing without worrying about implementing those other functions OR (if those functions are already implemented) errors introduced from those other functions.