Was bedeuten die Unterstriche in _servicename_ in AngularJS-Tests?


76

Im folgenden Beispieltest lautet der ursprüngliche Anbietername APIEndpointProvider, aber für die Injektion und Service-Instanziierung scheint die Konvention zu sein, dass er mit Unterstrichen versehen werden muss. Warum ist das so?

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

});

Was ist die Konvention, für die mir eine bessere Erklärung fehlt?

Antworten:


108

Die Unterstriche sind ein praktischer Trick, mit dem wir einen Dienst unter einem anderen Namen einfügen können, damit wir lokal eine lokale Variable mit demselben Namen wie der Dienst zuweisen können.

Das heißt, wenn wir dies nicht tun könnten, müssten wir einen anderen Namen für einen Dienst vor Ort verwenden:

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

Der $injectorbeim Testen verwendete kann nur die Unterstriche entfernen, um uns das gewünschte Modul zu geben. Es ist nicht tut nichts außer lassen Sie uns die gleichen Namen wieder verwenden.

Lesen Sie mehr in den Angular-Dokumenten

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.