I feel that the post misses one major point in unit tests and coverage: you want to verify your error paths. Without mocks or injection of some sort, how are you to validate your error handling? I'm a big fan of integration tests because they make sure things work. But an integration test will have trouble forcing an error out of a dependency.