I believe using ```$httpBackend``` makes sense when directly testing something that makes http requests.  I think it makes sense to mock services when testing a controller that simply uses those services.

In other words, the actual testing of the service would use ```$httpBackend``` in it's own unit tests.  The controller shouldn't care about the implementation of the service.