Angularjs 单元测试隔离范围值

Angularjs unit test isolated scope value

我有一个如下所示的指令:

angular.directive('myDirective', ['$compile', function($compile){
    return {
        link: function(scope, element, attr, controller) {
            function update(){
                if(scope.value == "A"){
                    scope.desc = "Welcome";
                }else{
                    scope.desc = "Not Welcome";
                }
            }

            scope.$watch('value', function(newValue, oldValue) {
                update();
            },true);

            update();
        }
    };
}]);

我如何编写一个单元测试来验证 scope.value 中的更改 return 是否正确 scope.desc

根据来自 this question 的信息:

// inject $rootScope and $compile in beforeEach
it('should change desc on value change', function() {
  var scope = $rootScope.$new();
  var element = angular.element('<my-directive></my-directive>');
  element = $compile(element)(scope);
  $rootScope.$digest();
  var directiveScope = element.scope();
  expect(directiveScope.desc).toEqual("Not Welcome");
  directiveScope.value = 'A';
  $rootScope.$digest();
  epxect(directiveScope.desc).toEqual("Welcome");
});

Fiddle