我正在使用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服务javascript文件来处理这个。
答案 0 :(得分:2)
您可以直接访问控制注入的提供商服务。它看起来像这样,注入了$ provide:
$provide.value('$JSOMService', MockJSOMService());
这基本上就是说,只要有人要求$ JSOMService,就给他们提供从MockJSOMService返回的任何内容。
您可以在设置应用时进行设置。像这样:
myApp.run(['$provide', function($provide) {
$provide.value('$JSOMService', MockJSOMService());
}]);
这基本上是您可以切换服务的方式。诚然有点时髦,但我希望这有帮助!