I've been in that position, both in an out of actual TDD. What I normally do is write tests for other people's interfaces, whenever possible. I then know before I run my code if they did one of the many common things that people do:
- Broke an API by re-naming or completely doing away with something
- Broke an API with subtle type changes that did not get noticed
- Pushed a toxic revision without testing it
- Sprung memory leaks (my test suite is Valgrind aware)
- Block where they never blocked before
Any of those failing would usually result in me saying "Hey, can you check on (module), I think it broke in the last revision"
This got ugly only one time. Someone else got really upset that I was writing tests for their code and insisted that I was out for their job. I could not make the person understand that I was just out to make my job easier.
It's never a good idea to come right out and say "Look, I'm spending more time debugging your code than working on my own", unless you absolutely have to (i.e. your boss is asking about your performance). Most of the time, if you just send people the tests, they're happy to have them. If you're already meeting resistance with the idea, just try to not offend anyone or seem condescending.
Mock functions / stubs are ok, but what remains is the program as a whole is still likely to break if real tests aren't run. At least, when that happens, you can quickly rule out your stuff and (likely) point right at the problem.