From the Angular official tutorial (Test section):
The injector ignores leading and trailing underscores here (i.e. $httpBackend). This allows us to inject a service but then attach it to a variable with the same name as the service.
In your example, you could rename the variable $compile
as, say, compile
and then remove the underscores from the parameter name. In fact, you did that to scope
so $rootScope
remained underscore-free.
Personally I like to keep the name of Angular built-in services in my tests so they can be easily spotted while skimming through the code.