Einheit Ich versuche, eine einfache Direktive Einheit testen, aber die Variable im Bereich ist immer undefiniert.Wie kann ich Einheit isoliert Bereich in Direktive
Richtlinie Src Code:
.directive('ratingButton', ['$rootScope',
function($rootScope) {
return {
restrict: "E",
replace: true,
template: '<button type="button" class="btn btn-circle" ng-class="getRatingClass()"></button>',
scope: {
buttonRating: "="
},
link: function(scope, elem, attr) {
scope.getRatingClass = function() {
if (!scope.buttonRating)
return '';
else if (scope.buttonRating.toUpperCase() === 'GREEN')
return 'btn-success';
else if (scope.buttonRating.toUpperCase() === 'YELLOW')
return 'btn-warning warning-text';
else if (scope.buttonRating.toUpperCase() === 'RED')
return 'btn-danger';
else if (scope.buttonRating.toUpperCase() === 'BLUE')
return 'btn-info';
}
}
};
}])
Test:
describe('Form Directive: ratingButton', function() {
// load the controller's module
beforeEach(module('dashboardApp'));
var scope,
element;
// Initialize the controller and a mock scope
beforeEach(inject(function($compile, $rootScope) {
scope = $rootScope.$new();
//set our view html.
element = angular.element('<rating-button button-rating="green"></rating-button>');
$compile(element)(scope);
scope.$digest();
}));
it('should return appropriate class based on rating', function() {
//console.log(element.isolateScope());
expect(element.isolateScope().buttonRating).toBe('green');
expect(element.isolateScope().getRatingClass()).toBe('btn-success');
});
});
ich ähnlichen Code in einer anderen Richtlinie Unit-Test verwendete ich, indem Werte durch das Element Attribute hatte und es funktionierte wie erwartet. Für diesen Test buttonRating ist immer undefined nicht sicher wohin von hier zu gehen (Ich bin ziemlich neu mit Jasmine/Karma)
Jede Hilfe wäre toll!
ah sieht aus wie das funktioniert. Keine Ahnung warum ich nicht daran gedacht habe! – atsituab
keine Sorgen, dass passiert .. :) – PSL
Pfui, verschwendete so viel Zeit auf diese. funktionierte gut für @ aber = wusste nicht, dass Sie die literale Zeichenfolge dort nicht setzen können (es ist UNBINDABLE). froh, dass Angular 2 2-Wege-Bindung unter der Haube loswerden. – FlavorScape