2015-04-03 4 views
0

Я тестирую директиву изоляции, которая является внутренним контроллером и значением области директивы, используемой в контроллере.Настройка тестового модуля для доступа к внутреннему контроллеру директивы

Это простой плункер http://plnkr.co/edit/r91xk1?p=preview от реального кода, который является директивной оболочкой для сетки, но это показывает проблему.

excepts из теста, который неудовлетворительный:

beforeEach(inject(function($rootScope, $controller, $compile) { 
     $compile = $compile; 
     $scope = $rootScope.$new(); 

     //Here is the scope information defined, what we want to get into the directive 
     $scope.itemToTest = "-beforeTest filled in valueFromTest--" 

     // Here we declare that the "itemToTest" attribute is bound to the *value* of itemToTest 
     elm = angular.element('<primary-grid itemToTest="itemToTest" ></primary-grid>'); 
     e = $compile(elm)($scope); 
     $scope.$digest(); 
     console.log("in beforeEach $scope %o ", $scope.$id); 
    })); 


    it('should have filled in the value the grid', function() { 
     // Access the isolateScope using <ELEMENT>.isolateScope, to see what's happening inside 
     //This fails 
     console.log("in Test e.scope() %o ", e.scope()); 
     console.log("in Test e.isolateScope() %o ", e.isolateScope().$id); 
     console.log("in Test e.isolateScope().itemToTest %o ", e.isolateScope().itemToTest); 
     console.log("in Test e %o ", e); 
     //This Test fails 
     expect(e.isolateScope().itemToTest).toEqual($scope.itemToTest); 
    }) 

...

Любых идей о том, что это лучший способ, чтобы установить правильное значение на директивах в тестах, так что контроллер может использовать его, и код может тестировать устройство?

благодаря

ответ

0

Постановили: Нужно использовать 'пункт-к-тест' в качестве атрибута в разметке, а не верблюжьего (т.е. JS) имя

использование:

elm = angular.element('<primary-grid item-to-test="itemToTest" ></primary-grid>’); 

вместо от:

elm = angular.element('<primary-grid itemToTest="itemToTest" ></primary-grid>’); 
Смежные вопросы