Что означает подчеркивание в servicename в тестах AngularJS?


в следующем примере теста исходное имя поставщика-APIEndpointProvider, но для инъекции и создания экземпляра службы соглашение, похоже, должно быть введено с подчеркиванием, обертывающим его. Почему?

'use strict';

describe('Provider: APIEndpointProvider', function () {

  beforeEach(module('myApp.providers'));

  var APIEndpointProvider;
  beforeEach(inject(function(_APIEndpointProvider_) {
    APIEndpointProvider = _APIEndpointProvider_;
  }));

  it('should do something', function () {
    expect(!!APIEndpointProvider).toBe(true);
  });

});

что такое конвенция, которой мне не хватает лучшего объяснения?

1 74

1 ответ:

подчеркивания-это удобный трюк, который мы можем использовать для введения службы под другим именем, чтобы мы могли локально назначить локальную переменную с тем же именем, что и служба.

то есть, если бы мы не могли этого сделать, нам пришлось бы использовать какое-то другое имя для службы локально:

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 используется в тестировании может просто удалить подчеркивания, чтобы дать нам модуль, который мы хотим. Это не do все, кроме давайте повторно использовать то же самое имя.

подробнее в угловой docs