【发布时间】:2016-03-25 19:39:01
【问题描述】:
我有一个要模拟和测试的指令。该指令将 ngModel 设置为双重绑定和 transclude 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.isolateScope() ||元素.范围;涵盖这两种情况。
标签: javascript angularjs unit-testing