角度自动模拟控制器/服务依赖性

时间:2015-01-26 09:01:27

标签: angularjs unit-testing mocking

在Angular单元测试中,需要大量不必要的代码来手动模拟/存根所有依赖项,特别是当我需要的是一些通用模拟时。此外,当服务/控制器的依赖关系列表发生更改时,由于缺少依赖关系,测试会中断。

在C#中,有一种方法可以在调用Resolve()时重新配置DI容器以自动模拟所有依赖项。我想在Angular中使用类似的东西。

我想离开这个:

beforeEach(inject(function ($controller, $rootScope, agsRest) {
        scope = $rootScope.$new();      

        sut = $controller('SearchController', {
            $scope: scope
            , map: {}
            , agsRest: agsRest
            , config: {}
            , core: {}
            , myPopup: {}
            , popupFormatter: {}
        });
    }));

对于这样的事情:

beforeEach(inject(function ($controller, $rootScope, agsRest) {
        scope = $rootScope.$new();      

        sut = autoMock("SearchController"); // instance of SearchController is returned, which has all dependencies mocked with sinon/jasmine/whatever
    }));

是否有某种类型的库/代码可以执行此操作?

2 个答案:

答案 0 :(得分:1)

我需要类似的东西,并提出了这个小实用程序库:tentacle.js。我可以提出建议并提出改进API的请求。

答案 1 :(得分:0)

您应该寻找 ng-improved-testing 。它为所有注入的服务创建自动模拟(只需在注入服务时添加"模拟"到服务名称)。

链接到GitHub: https://github.com/evangalen/ng-improved-testing