Что означает подчеркивание в 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 ответ:
подчеркивания-это удобный трюк, который мы можем использовать для введения службы под другим именем, чтобы мы могли локально назначить локальную переменную с тем же именем, что и служба.
то есть, если бы мы не могли этого сделать, нам пришлось бы использовать какое-то другое имя для службы локально:
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 все, кроме давайте повторно использовать то же самое имя.