我应该如何访问一个元素的angularjs $ ngModelController在茉莉单元测试?(

2019-08-19 20:33发布

我目前使用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
  }));
});

不过,我想知道是否有更好的访问$ngModelController ,或者如果访问$ngModelController是一个坏主意?

Answer 1:

你也可以做directiveElement.controller('ngModel')

我当然认为有正当测试的原因,为什么你会想对这款手柄,但更常见的方式是通过形式来获得它的句柄(如https://github.com/angular/angular.js/blob /master/test/ng/directive/formSpec.js )



文章来源: How should I access an element's angularjs $ngModelController in a jasmine unit test?