在AngularJStesting中,_servicename_中的下划线是什么意思?
在下面的示例testing中,原始的提供者名称是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); }); });
什么是约会我错过了一个更好的解释?
下划线是一个便利的技巧,我们可以用它来注入一个不同名称的服务,这样我们可以在本地分配一个与服务同名的本地variables。
也就是说,如果我们不能做到这一点,我们就不得不在本地使用其他的名称:
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 });
在testing中使用的$injector
能够删除下划线,给我们我们想要的模块。 除了让我们重复使用同一个名字,它什么也不做 。
阅读更多的Angular文档