mercredi 18 février 2015

AngularJs Unit Testing isolated scope Directive

I want to test the following directive "spinInput" which requires ngModel, but I can't access the directive's scope. All I get is an empty scope. Angularjs 1.3.13 is used.


Directive:



angular.module('charts.spinInput',[]).directive('spinInput', function() {
return {
restrict: 'E',
replace: true,
require:'ngModel',
scope: {
min:"@"
},
controller:function($scope)
{
$scope.test=12;

$scope.calcAngle=function(point)
{
var xDif=point.x-50;
var yDif=point.y-50;

return (Math.atan2(yDif, xDif) * 180 / Math.PI);

};

},

templateUrl: 'charts/directive/spinInput/spinInput.html',
link:function(scope, element, attr,ngModel) {
...
}

};
});


Unit Test: throws following error: TypeError: 'undefined' is not an object (evaluating 'innerScope.min')



describe('spinInput', function() {

beforeEach(module('charts'));

var $httpBackend;
var element;
var outerScope;
var innerScope;




beforeEach(inject(function($rootScope, $compile , $injector) {
element = angular.element('<spin-input min="12"></spin-input>');
$httpBackend = $injector.get('$httpBackend');
$httpBackend.whenGET('charts/directive/spinInput/spinInput.html').respond(200, '');
outerScope = $rootScope.$new();
$compile(element)(outerScope);

innerScope = element.isolateScope();

outerScope.$digest();
}));


it('scope.min should be defined', function() {
expect(innerScope.min).toBeDefined();
});


});

Aucun commentaire:

Enregistrer un commentaire