我应该如何访问元素';jasmine单元测试中的s angularjs$ngModelController?
我目前正在使用我应该如何访问元素';jasmine单元测试中的s angularjs$ngModelController?,angularjs,jasmine,angularjs-directive,Angularjs,Jasmine,Angularjs Directive,我目前正在使用directiveElement.data(“$ngModelController”)访问元素的$ngModelController,如下例所示 describe("directiveElement", function () { it("should do something with ngModelController", inject(function($compile, $rootScope) { var directiveElement = $compile(
directiveElement.data(“$ngModelController”)
访问元素的$ngModelController
,如下例所示
describe("directiveElement", function () {
it("should do something with ngModelController", inject(function($compile, $rootScope) {
var directiveElement = $compile("<input ng-model="myNgModel" customDirective type="text"></input>")($rootScope);
$rootScope.$digest();
var ngModelCtrl = directiveElement.data("$ngModelController");
ngModelCtrl.$modelValue = "12345";
// do rest of test
}));
});
描述(“directiveElement”,函数(){
它(“应该使用ngModelController做些什么”,inject(函数($compile,$rootScope){
var directiveElement=$compile(“”($rootScope);
$rootScope.$digest();
var ngModelCtrl=directiveElement.data(“$ngModelController”);
ngModelCtrl.$modelValue=“12345”;
//做剩下的测试
}));
});
但是,我想知道是否有更好的方法访问
$ngModelController
,或者访问$ngModelController
是个坏主意?您也可以执行directiveElement.controller('ngModel')
我当然认为有正当的测试理由可以解释为什么您需要一个句柄,尽管更常见的方法是通过表单获取句柄(例如,您也可以执行
directiveElement.controller('ngModel')
)。当然,我也认为有正当的测试理由可以解释为什么您需要一个句柄,尽管更常见的方法是通过表单
(例如)获取句柄。但不确定为什么要这样设置$modelValue。你可能只是想设置myNgModel
?@jonc你的评论就是我想要的答案,你能不能把它作为答案发布,我会把它标记为答案。你能模仿ngModelCtrl.$modelValue吗?你有一个小时的“ngModelController”而没有弄明白这个问题。谢谢