Що означає підкреслення в _servicename_ у тестах AngularJS?


76

У наведеному нижче прикладі тесту оригінальним ім'ям постачальника є 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);
  });

});

До якої конвенції мені не вистачає кращого пояснення?

Відповіді:


108

Підкреслення - це зручний фокус, який ми можемо використовувати для введення служби під іншою назвою, щоб ми могли локально призначити локальну змінну з тим самим іменем, що і служба.

Тобто, якщо ми не змогли цього зробити, нам довелося б використовувати інше ім’я для служби локально:

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
});

$injectorВикористовується при тестуванні може просто видалити підкреслення , щоб дати нам модуль ми хочемо. Він нічого не робить, крім того, давайте повторно використовувати те саме ім’я.

Детальніше читайте в документації Angular

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.