我有一个我想要模拟和测试的指令。该指令将ngModel设置为double绑定并转换为true
scope: {'ngModel': '=' }
transclude: true
我要测试的规范非常简单。
$el.find('input').prop('checked', $scope.ngModel);
在我的单元测试中,我创建了一个beforeEach并创建了指令来测试 ngModel = checked
element = angular.element("<div *directiveName* ><div><input type=\"checkbox\" ngModel=checked /> </div></div>");
$rootScope = $rootScope.$new();
$compile(element)($rootScope);
$rootScope.$digest(element);
scope = element.isolateScope();
通常我会将scope设置为等于element.scope()。我会在右边调用 isolateScope()方法吗?
我相信,因为我将范围设置为等于 isolateScope()元素,所以规范应该像
一样简单 expect(scope.ngModel).to.equal('checked');
但是, scope.ngModel 未定义。我不确定在创建指令或调用测试时我缺少什么。任何方向都会非常感激。
答案 0 :(得分:1)
您没有正确地将值传递给元素。它应该是:
element = angular.element("<div *directiveName* ><div><input type=\"checkbox\" ng-model=checked /> </div></div>");
更改是ng-model而不是ngModel。
我还建议在指令中为自定义属性使用不同的名称,因为它与内置的angular指令混淆。