Angularjs 给工厂注入点名

Angularjs 给工厂注入点名,angularjs,mocking,jasmine,Angularjs,Mocking,Jasmine,我需要在Jasmine中使用angularjs mock inject方法来注入名称中带有点的服务。我尝试添加字符串标识符,但inject方法似乎不支持这一点。这是不可能的: beforeEach(inject(['$rootScope','MyApp.Factories.TestFactory', function ($rootScope, testFactory) { //doSomeThing }])); 有没有其他方法来处理这个问题?我还没有测试过,但您可能可以自

我需要在Jasmine中使用angularjs mock inject方法来注入名称中带有点的服务。我尝试添加字符串标识符,但inject方法似乎不支持这一点。这是不可能的:

beforeEach(inject(['$rootScope','MyApp.Factories.TestFactory', 
    function ($rootScope, testFactory) {

    //doSomeThing

}]));

有没有其他方法来处理这个问题?

我还没有测试过,但您可能可以自己从
$injector
中获得它。大概是这样的:

beforeEach(inject(function($rootScope,$injector) {
    var testFactory = $injector.get('MyApp.Factories.TestFactory');
    //doSomeThing

}));

名字中的点的目的是什么?如果你想使用名称空间,为什么不使用模块呢,我明白你的观点,但如果我在控制器名称中删除名称空间,我将如何处理以下情况:假设您有两个模块模块A和模块B,并且在每个模块中都有一个具有相同名称的控制器版本,例如MyCtrl,在视图中引用它时将使用哪个控制器?我想我已经在我的任何angularapps中都不要遇到这种情况,通常我的模块在逻辑上是由功能区域限定的,没有与其他人共享名称的服务/控制器/指令,但我可以看到这是如何容易发生的。谢谢,这确实有效。如果angular mock inject方法能够支持字符串标识符,那就太好了!