单元测试AngularJS指令中的私有函数

mkh*_*tib 5 javascript unit-testing angularjs angularjs-directive

如何对指令中定义的函数进行单元测试,如下所示myFunc

angular.module('myApp')
  .directive('myDir', [function () {

    var myFunc = function (arg) {
      // code in here.
    };

    return {
      restrict: 'A',
      scope: { },
      link: function (scope, element) {

      }
    };
  }]);
Run Code Online (Sandbox Code Playgroud)

或者,如何定义我不希望在指令之外公开的可测试指令特定函数?

edd*_*iec 6

最常见的方法是不测试私有方法,而是测试公开其行为的公共接口.这意味着您的单元测试将成为您的公共接口的合同.

您已声明不希望在指令之外公开,但当然另一个选择是将此逻辑提取到某个服务中myDirService并在那里执行您的逻辑.在这种情况下,您将能够独立测试.