Tôi đang cố gắng kiểm tra đơn vị một chỉ thị sử dụng ngModel và gặp khó khăn. Dường như các chức năng liên kết của chỉ thị của tôi là không bao giờ được gọi là ...Chỉ thị thử nghiệm đơn vị góc sử dụng ngModel
Đây là mã chỉ thị của tôi:
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;
}
}
}
}
}]);
Đây là tôi đặc tả kiểm tra:
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)');
});
});
});
Giao diện điều khiển dữ liệu ghi nhận "được gọi là" không bao giờ xảy ra và rõ ràng là elem trong thông số thử nghiệm của tôi không bao giờ được cập nhật.
Tôi đang làm gì sai ??
Tôi đã tìm ra điều này ... Tôi quên thêm chỉ thị của mình vào mảng tệp trong tệp karma.config của mình. :S – mcottingham