我正在使用AngularJS构建一个Web应用程序,并构建了一个AngularJS服务,我的控制器使用它来创建,检索,更新,删除数据。我想将UI工作外包给另一个开发人员,但我不希望他们需要AngularJS服务所做的依赖项。我想构建一个模拟服务,只返回模拟数据,而不是调用实时 REST 服务。
我的应用设置如下:
var myApp = angular.module('myApp', ['ui.bootstrap']);
我的控制器当前使用以下方法连接到服务:
myApp.controller('TodoCtrl', function TodoCtrl($scope, $JSOMService) {
$JSOMService.DoStuff();
});
我的服务是这样定义的
myApp.service('$JSOMService', function ($q, $http) { ... });
处理将服务切换为另一个服务的最佳方法是什么?这与单元测试有点不同,我想知道是否有任何常见的方法可以做到这一点?
现在,我只有一个稍微不同的代码库,我只是切换了加载的Angularjs ServiceJavaScript文件来处理这个问题。
您可以直接访问控制注入的提供程序服务。它看起来像这样,其中注入了$provide:
$provide.value('$JSOMService', MockJSOMService());
这基本上是说,每当有人要求$JSOMService时,给他们从MockJSOMService返回的任何内容。
您可以在设置应用时进行此设置。喜欢这个:
myApp.run(['$provide', function($provide) {
$provide.value('$JSOMService', MockJSOMService());
}]);
这基本上就是您切换服务的方式。诚然有点时髦,但我希望这有所帮助!