在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
}));
是否有某种类型的库/代码可以执行此操作?
答案 0 :(得分:1)
我需要类似的东西,并提出了这个小实用程序库:tentacle.js。我可以提出建议并提出改进API的请求。
答案 1 :(得分:0)
您应该寻找 ng-improved-testing 。它为所有注入的服务创建自动模拟(只需在注入服务时添加"模拟"到服务名称)。