What does the underscores in _servicename_ mean in AngularJS tests?
The underscores are a convenience trick we can use to inject a service under a different name so that we can locally assign a local variable of the same name as the service.
That is, if we couldn't do this, we'd have to use some other name for a service locally:
beforeEach(inject(function(APIEndpointProvider) { AEP = APIEndpointProvider; // <-- we can't use the same name!}));it('should do something', function () { expect(!!AEP).toBe(true); // <-- this is more confusing});
The $injector
used in testing is able to just remove the underscores to give us the module we want. It doesn't do anything except let us reuse the same name.