Dấu gạch dưới trong _servicename_ có nghĩa là gì trong các bài kiểm tra AngularJS?


76

Trong thử nghiệm ví dụ sau, tên nhà cung cấp ban đầu là APIEndpointProvider, nhưng để chèn và khởi tạo dịch vụ, quy ước dường như là nó phải được chèn với dấu gạch dưới bao bọc nó. Tại sao vậy?

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

});

Quy ước mà tôi đang thiếu một lời giải thích tốt hơn là gì?

Câu trả lời:


108

Dấu gạch dưới là một thủ thuật tiện lợi mà chúng ta có thể sử dụng để chèn một dịch vụ dưới một tên khác để chúng ta có thể gán cục bộ một biến cục bộ có cùng tên với dịch vụ.

Đó là, nếu chúng tôi không thể làm điều này, chúng tôi sẽ phải sử dụng một số tên khác cho một dịch vụ cục bộ:

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

Được $injectorsử dụng trong thử nghiệm có thể chỉ cần loại bỏ các dấu gạch dưới để cung cấp cho chúng tôi mô-đun mà chúng tôi muốn. Nó không làm bất cứ điều gì ngoại trừ cho phép chúng tôi sử dụng lại cùng một tên.

Đọc thêm trong tài liệu Angular

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.