all testing stuff follows the idea of isolation. What we are talking about is different levels of isolation. My approach is to have multiple isolation levels tested in application depending on the particular task. But the smaller and easier an isolation level is the more careful and detailed tests are.
For example, if my current isolation level is a function summing two numbers, I can carefully test many straight and alternative scenarious. But if my isolation level is a service, there are so many branches in logic that I'm unable to carefully test that function used inside the service.
So, there is no contradiction between service and unit tests. The problem is to describe a needed isolation level to carefully test your logic and create that isolation by any means available