【问题标题】:How to unit test service depending on $controller service in angularjs如何根据 angularjs 中的 $controller 服务对服务进行单元测试
【发布时间】:2016-05-21 15:13:03
【问题描述】:

我有一项依赖于 $controller 服务的服务。在此服务内部,$controller 服务采用控制器名称和本地变量来实例化此控制器。 当我对该服务进行单元测试时,我想传递一个虚拟控制器名称,以便我可以正确测试该服务。 通过阅读 angular.js 源代码,我知道 $controller 服务通过控制器名称查找已注册的控制器。控制器通过 $controllerProvider 的 register 方法注册。如何在单元测试中访问此方法。我在这里使用 Jasmine 进行单元测试。 任何建议表示赞赏。

【问题讨论】:

  • 朋友请添加您尝试过的 Angular 脚本和单元测试脚本。只是一个难以回答的隐约问题。

标签: angularjs unit-testing controller


【解决方案1】:

如果你尝试测试 Angular 的 $controller 服务,并且假设你使用的是 ngMocks,你可以正常使用 $controller。在 Angular 的文档中,有一个 example on how to use it

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

describe('myDirectiveController', function() {
 it('test case', inject(function($controller) {
    // Your code goes here
 });
});

【讨论】:

    【解决方案2】:
    beforeEach(function () {
        module('myApp', function ($controllerProvider) {
            $controllerProvider.register(dummyController, function () { });
        });
    });
    

    我结束了这个。当我的服务调用 $controller(dummyController, controllerlocals) 时,它能够找到在其局部变量控制器中注册的这个 dummyController。 希望这会帮助人们遇到相同的情况

    【讨论】:

      猜你喜欢
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-07
      • 1970-01-01
      相关资源
      最近更新 更多