Sto provando a testare un'unità una direttiva che utilizza ngModel e che presenta difficoltà. Sembra che la funzione di collegamento della mia direttiva non viene mai chiamato ...Direttiva angolare di test unità che utilizza ngModel
Ecco il mio codice di direttiva:
coreModule.directive('coreUnit', ['$timeout', function ($timeout) {
return {
restrict: 'E',
require: '?ngModel',
template: "{{output}}",
link: function (scope, elem, attrs, ngModelCtrl) {
ngModelCtrl.$render = function() {
render(ngModelCtrl.$modelValue);
};
console.log("called");
function render(unit) {
if (unit) {
var output = '(' +
unit.numerator +
(unit.denominator == '' ? '' : '/') +
unit.denominator +
(unit.rate == 'NONE' || unit.rate == '' ? '' : '/' + unit.rate) +
')';
scope.output = output == '()' ? '' : output;
}
}
}
}
}]);
Ecco la mia prova spec:
describe('core', function() {
describe('coreUnitDirective', function() {
beforeEach(module('core'));
var scope,
elem;
var tpl = '<core-unit ng-model="myUnit"></core-unit>';
beforeEach(inject(function ($rootScope, $compile) {
scope = $rootScope.$new();
scope.myUnit = {};
elem = $compile(tpl)(scope);
scope.$digest();
}));
it('the unit should be empty', function() {
expect(elem.html()).toBe('');
});
it('should show (boe)', function() {
scope.myUnit = {
numerator: 'boe',
denominator: "",
rate: ""
};
scope.$digest();
expect(elem.html()).toContain('(boe)');
});
});
});
La console di output di registro "chiamato" non si verifica mai e ovviamente l'elem nella mia specifica di test non viene mai aggiornato.
Cosa sto facendo male ??
L'ho capito ... Ho dimenticato di aggiungere la mia direttiva all'array di file all'interno del mio file karma.config. :S – mcottingham