javascript - 单元测试注入(inject)依赖关系,如 angularJS 中的服务 Controller

标签 javascript angularjs unit-testing

让我们看看,我们根据:https://docs.angularjs.org/guide/unit-testing

describe('PasswordController', function() {
  beforeEach(module('app'));

  var $controller;

  beforeEach(inject(function(_$controller_){
    // The injector unwraps the underscores (_) from around the parameter names when matching
    $controller = _$controller_;
  }));

  describe('$scope.grade', function() {
    it('sets the strength to "strong" if the password length is >8 chars', function() {
      var $scope = {};
      var controller = $controller('PasswordController', { $scope: $scope });
      $scope.password = 'longerthaneightchars';
      $scope.grade();
      expect($scope.strength).toEqual('strong');
    });
  });
});

现在我正在制作服务和工厂,是否有任何等同于 ____$controller____ 的服务和工厂?所以我可以用其他东西注入(inject)它:

var controller = $controller('PasswordController', { $scope: $scope });

并更改依赖项的内部函数以便我可以对其进行测试,或者是否有更好的方法?

编辑: 使问题更清楚 这是问题的例子:

我有这个:

var app = angular.module("app").service("MyService",["$scope","$http",function($scope,$http){
    this.myFunction = function(){
        $http.get("/myApi/1");
    }
}]);

我如何使用

的等价物
var controller = $controller('PasswordController', { $scope: $scope });

所以我可以将 $scope 和 $http 注入(inject)到 myService 中?

最佳答案

您不能随时将依赖项注入(inject)工厂或服务,但您可以使用自定义对象模拟 依赖项,并让 Angular 自动替换它们。您可以为此使用 $provide。这是一个例子:

angular.module('app').service('some', function(dependencyService) {

});

测试时:

beforeEach(module(function($provide) {
   $provide.value('dependencyService', {

   });
}));

关于javascript - 单元测试注入(inject)依赖关系,如 angularJS 中的服务 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40234587/

相关文章:

java - 如何检查Java类中是否存在约束?

python - 在 python unittest 中关闭一些打印

javascript - DvaJS - 将保存的状态从 localStorage 加载到状态中

javascript - 谷歌地图 : remember id of marker with open info window

node.js - Node JS测试——模拟文件上传

javascript - $http({method}) 不工作,但 $http.get 工作

angularjs - 用户界面路由器错误 : Cannot read property '$$animLeave' of undefined

javascript - SVG 文本元素速度

javascript - 如何使用 pdf.js 从客户端设置范围 header ?

angularjs - Angular-permission 定义通过 API 检索的权限