2015-01-06 6 views
3

Я пытаюсь проверить одну директиву с жасмином. директива:Директива по тестированию с жасмином и областью пропуска по ссылке

angular.module('app').directive('test', 
    function(){ 
     return{ 
      restrict: 'A', 
      scope:{data:'='}, 
      link:function($scope,element,attrs){ 
      ..... 
       $scope.data=[200,300]; 
      } 
     } 
    } 
    ]); 

жасмин:

describe('test', function(){ 
    beforeEach(module('test')); 
    beforeEach(inject(function($rootScope,$compile){ 
     scope = $rootScope.$new(); 
     element = '<div test data="{{data}}"></div>';  
     scope.data = [100,200] 
     element = $compile(element)(scope); 
     scope.$digest(); 
    })); 
    it('is a test',function(){ 
     expect(data).toBe([100,200]); 
    }); 
} 

И как сфера использует "=", то передавая ссылку. Однако при запуске тестов возникает ошибка синтаксиса: данные «токена» неожиданны, ожидая [:] в столбце 3 выражения [{{data}}]. Если я избавлюсь от div в тестовом шаблоне только с <test data={{data}}></test>, он отлично работает. И когда я заменяю «=» на «@», он также отлично работает. Может ли кто-нибудь дать мне несколько советов о том, как передать ссылку на область действия? Благодарю.

ответ

5

После двух дней попыток я наконец смог это сделать.

describe('test', function(){ 
beforeEach(module('test')); 
beforeEach(inject(function($rootScope,$compile){ 
    $scope = $rootScope.$new(); 
    element = '<div test data="databind"></div>';  
    $scope.databind = [100,200] 
    element = $compile(element)($scope); 
    $scope.$digest(); 
})); 
it('is a test',function(){ 
    tests....... 
}); 

И кажется, что {{}} здесь не работал. И используя область действия, мы можем передать ее по ссылке.

+0

Удивительно, спасибо, что поделились этим, спасли меня долгое время проб и ошибок! – wdanda

Смежные вопросы