Yes, you should try to break dependencies so that functionality can be tested in very small units. This is the essense of TDD and it is hard to do it successfully if you don't.
Here's an interesting little commentary on TDD:
http://www.industriallogic.com/blog/history-microtests/
If you have legacy code with lots of dependencies, Michael Feathers writes about how to deal with that:
http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052