0

$親スコープ変数を監視する場合、ウォッチャーはどのようにテストできますか?現在、テストがどのように見えるか親変数を持つ角度単位テストウォッチャー

$scope.$parent.$watch('activeId', function (hotelId) { 
    $scope.select(activeId); 
}); 

を:たとえば、私は、お子様の範囲に持っている

... 

    beforeEach(inject(function (_$controller_, _$rootScope_) { 

     $scope = _$rootScope_.$new(); 
     $parentScope = _$rootScope_.$new(); 

     $controller = _$controller_('ChildCtrl', {'$scope': $scope}); 
     $parentController = _$controller_('ParentCtrl', {'$scope': $parentScope}); 
    })); 

    describe('select', function() { 
     beforeEach(function() { 
      spyOn($scope, 'select'); 
     }); 
     it('should call select', function() { 
      $parentScope.setActiveId(1); 
      $parentScope.$digest(); 

      expect($scope.select).toHaveBeenCalled(); 
     }); 
    }); 
}); 

しかしunfortunetly、このテストは失敗します。

答えて

0

私はこの問題に対処することができましたので、同様に、親コントローラを提供することにより、$スコープに$親を追加することで、テストに合格ようだ:

describe('Controller: TestController', function() { 

    beforeEach(module('App')); 

    var $controller, $scope, $parentController, $parentScope; 

    beforeEach(inject(function (_$controller_, _$rootScope_) { 

     $scope = _$rootScope_.$new(); 
     $parentScope = _$rootScope_.$new(); 
     $scope.$parent = $parentScope; 

     $parentController = _$controller_('ParentController', {'$scope': $parentScope}); 
     $controller = _$controller_('ChildCtrl', {'$scope': $scope}); 
    })); 
    it('should get $parent variable', function() { 
     var userId=$scope.$parent.vm.userId; 
     var simId=$scope.$parent.vm.simId; 
    }) 
     describe('select', function() { 
     beforeEach(function() { 
      spyOn($scope, 'select'); 
     }); 
     it('should call select', function() { 
      $scope.$parent.setActiveId(1); 
      $scope.$parent.$digest(); 

      expect($scope.select).toHaveBeenCalled(); 
     }); 
    }); 
}); 
関連する問題