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

});

我缺少更好的解释的约定是什么?

Answers:


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文档中阅读更多内容

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.