在 AngularJS 中模拟服务以解耦 REST 调用的最佳方法



我正在使用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());
}]);

这基本上就是您切换服务的方式。诚然有点时髦,但我希望这有所帮助!

最新更新