gpt4 book ai didi

angularjs - 使用 ngModel 的单元测试 Angular 指令

转载 作者:行者123 更新时间:2023-12-03 14:30:26 27 4
gpt4 key购买 nike

我正在尝试对使用 ngModel 并且遇到困难的指令进行单元测试。似乎我的指令的链接函数从未被调用过......

这是我的指令代码:

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;
}
}
}
}
}]);

这是我的测试规范:
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)');
});
});
});

控制台日志输出“调用”永远不会发生,显然我的测试规范中的元素永远不会更新。

我究竟做错了什么??

最佳答案

原来我没有在我的 karma.config 文件中包含该指令:S。添加它解决了我所有的问题。

关于angularjs - 使用 ngModel 的单元测试 Angular 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25573357/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com