_servicename_ 中的下划线在 AngularJS 测试中是啥意思?
Posted
技术标签:
【中文标题】_servicename_ 中的下划线在 AngularJS 测试中是啥意思?【英文标题】:What does the underscores in _servicename_ mean in AngularJS tests?_servicename_ 中的下划线在 AngularJS 测试中是什么意思? 【发布时间】:2013-02-25 10:04:57 【问题描述】:在下面的示例测试中,原始提供程序名称是 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
);
在测试中使用的$injector
可以去掉下划线来给我们想要的模块。它没有做任何事情,只是让我们重复使用相同的名称。
Read more in the Angular docs
【讨论】:
以上是关于_servicename_ 中的下划线在 AngularJS 测试中是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章