Tôi có chỉ thị AngularJS sau đây tạo ra một yếu tố input
. Đầu vào có thuộc tính ng-change
chạy chức năng doIt()
. Trong bài kiểm tra đơn vị chỉ thị của tôi, tôi muốn kiểm tra xem chức năng doIt
có được gọi khi người dùng thay đổi đầu vào hay không. Nhưng thử nghiệm không vượt qua. Mặc dù nó hoạt động trong trình duyệt khi kiểm tra thủ công.Làm thế nào để kích hoạt ng-thay đổi trong kiểm tra chỉ thị trong AngularJS
Chỉ thị:
...
template: "<input ng-model='myModel' ng-change='doIt()' type='text'>"
Test:
el.find('input').trigger('change') // Dos not trigger ng-change
sống bản demo (ng-change): http://plnkr.co/edit/0yaUP6IQk7EIneRmphbW?p=preview
Bây giờ, thử đi nếu tôi tự ràng buộc change
sự kiện thay vì sử dụng thuộc tính ng-change
.
template: "<input ng-model='myModel' type='text'>",
link: function(scope, element, attrs) {
element.bind('change', function(event) {
scope.doIt();
});
}
sống bản demo (thủ công binding): http://plnkr.co/edit/dizuRaTFn4Ay1t41jL1K?p=preview
Có cách nào để sử dụng ng-change
và làm cho nó kiểm chứng? Cảm ơn bạn.
thay đổi ng được kích hoạt trên thay đổi mô hình, không phải sự kiện. tại sao không chỉ kiểm tra mã điều khiển cho "doIt" fn của bạn? – marko
@marko, cảm ơn câu hỏi hay. Tất cả những gì tôi muốn làm trong bài kiểm tra của chỉ thị là kiểm tra xem doIt được gọi khi người dùng thay đổi đầu vào. DoIt chính nó sẽ được chế giễu trong thử nghiệm của chỉ thị, bởi vì nó đã được thử nghiệm trong kiểm tra của bộ điều khiển, như bạn đã đề xuất. – Evgenii