gpt4 book ai didi

javascript - 具有包含 ng-model 的隔离范围的模拟和测试指令

转载 作者:行者123 更新时间:2023-12-03 07:20:44 25 4
gpt4 key购买 nike

我有一个想要模拟和测试的指令。该指令将 ngModel 设置为双重绑定(bind)并嵌入 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();

通常我会将范围设置为等于 element.scope()。我会在右边调用 isolateScope() 方法吗?

我相信,由于我将范围设置为等于元素 isolateScope(),因此规范应该像

        expect(scope.ngModel).to.equal('checked');

但是,scope.ngModel 未定义。我不确定在创建指令或调用测试时缺少什么。任何方向将不胜感激。

最佳答案

您没有正确地将值传递到元素中。应该是:

element = angular.element("<div *directiveName* ><div><input type=\"checkbox\" ng-model=checked /> </div></div>");

更改是 ng-model 而不是 ngModel。

我还建议在指令中为自定义属性使用不同的名称,因为与内置的 Angular Directive(指令)会混淆。

关于javascript - 具有包含 ng-model 的隔离范围的模拟和测试指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36226809/

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