如何根据angularjs中的$controller服务对服务进行单元测试

如何根据angularjs中的$controller服务对服务进行单元测试,angularjs,unit-testing,controller,Angularjs,Unit Testing,Controller,我的服务依赖于$controller服务。在该服务内部,$controller服务采用控制器名称和局部变量来实例化该控制器。 当我对该服务进行单元测试时,我希望传递一个虚拟控制器名称,以便能够正确地测试该服务。 通过阅读angular.js源代码,我知道$controller服务按控制器名称查找已注册的控制器。控制器通过$controllerProvider的注册方法注册。如何在单元测试中访问此方法。我在这里使用Jasmine进行单元测试。 非常感谢您的建议。如果您正在尝试测试Angular的$

我的服务依赖于$controller服务。在该服务内部,$controller服务采用控制器名称和局部变量来实例化该控制器。 当我对该服务进行单元测试时,我希望传递一个虚拟控制器名称,以便能够正确地测试该服务。 通过阅读angular.js源代码,我知道$controller服务按控制器名称查找已注册的控制器。控制器通过$controllerProvider的注册方法注册。如何在单元测试中访问此方法。我在这里使用Jasmine进行单元测试。
非常感谢您的建议。

如果您正在尝试测试Angular的$controller服务,并且假设您使用的是NGMock,您可以正常使用$controller。在Angular的文档中,有一个

无论如何,以下是文档中的示例:

describe('myDirectiveController', function() {
 it('test case', inject(function($controller) {
    // Your code goes here
 });
});
我最终得到了这个。当我的服务调用$controller(dummyController,controllerlocals)时,它能够找到在其局部变量控制器中注册的这个dummyController。
希望这能帮助人们有相同的场景

朋友,请添加您尝试过的角度脚本和单元测试脚本。只需将难以回答的问题迫在眉睫即可。
beforeEach(function () {
    module('myApp', function ($controllerProvider) {
        $controllerProvider.register(dummyController, function () { });
    });
});