试图了解如何使用Angular-mock

时间:2015-12-04 23:36:44

标签: angularjs testing

所有

我对Angular Testing很新,来自它的文档: https://code.angularjs.org/1.3.15/docs/guide/unit-testing

有一个例子:

angular.module('app', [])
.controller('PasswordController', function PasswordController($scope) {
  $scope.password = '';
  $scope.grade = function() {
    var size = $scope.password.length;
    if (size > 8) {
      $scope.strength = 'strong';
    } else if (size > 3) {
      $scope.strength = 'medium';
    } else {
      $scope.strength = 'weak';
    }
  };
});

测试规格:

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');
    });
  });
});

我想知道Angular-Mock做了什么,为什么我们可以直接使用那些函数,例如" inject",我们在哪里包含该模块(或者它将该函数绑定到加载WINDOW全局对象?)? 如何注入函数告诉如果注入是针对控制器或指令等,我发现它们都使用相同的注入函数。

1 个答案:

答案 0 :(得分:1)

就像Angular ngMock documentation说的那样:

  

angular.mock.module注意:此功能也在窗口上发布   方便访问。

     

angular.mock.inject注意:此功能也在窗口上发布   方便访问。

这就是你可以直接访问这些功能的原因。

注入功能它只是一种简单的方式来达到服务,就像你在服务/指令/控制器/中注入它们一样:它们是简单的单身人士,不需要< em> for something。