में निर्देश परीक्षण में एनजी-परिवर्तन कैसे ट्रिगर करें मेरे पास निम्न AngularJS निर्देश है जो input
तत्व बनाता है। इनपुट में ng-change
विशेषता है जो doIt()
फ़ंक्शन चलाती है। मेरे निर्देशक इकाई परीक्षण में मैं यह जांचना चाहता हूं कि doIt
फ़ंक्शन को कॉल किया जाता है जब उपयोगकर्ता इनपुट बदलते हैं। लेकिन परीक्षण पास नहीं होता है। हालांकि मैन्युअल रूप से परीक्षण करते समय यह ब्राउज़र में काम करता है।AngularJS
निर्देशक:
...
template: "<input ng-model='myModel' ng-change='doIt()' type='text'>"
टेस्ट:
el.find('input').trigger('change') // Dos not trigger ng-change
लाइव डेमो (एनजी-परिवर्तन): http://plnkr.co/edit/0yaUP6IQk7EIneRmphbW?p=preview
अब, परीक्षण गुजरता है, तो मैं मैन्युअल बजाय change
घटना बाँध ng-change
विशेषता का उपयोग करने के लिए।
template: "<input ng-model='myModel' type='text'>",
link: function(scope, element, attrs) {
element.bind('change', function(event) {
scope.doIt();
});
}
लाइव डेमो (मैनुअल बंधन): http://plnkr.co/edit/dizuRaTFn4Ay1t41jL1K?p=preview
वहाँ ng-change
उपयोग करें और यह परीक्षण योग्य बनाने के लिए एक तरीका है? धन्यवाद।
एनजी-परिवर्तन मॉडल परिवर्तनों पर ट्रिगर किया गया है, घटनाओं पर नहीं। क्यों न केवल अपने "doIt" fn के लिए नियंत्रक कोड का परीक्षण करें? – marko
@marko, अच्छे प्रश्न के लिए धन्यवाद। मैं निर्देशक के परीक्षण में जो करना चाहता हूं वह यह जांचना है कि जब उपयोगकर्ता इनपुट बदलता है तो उसे बुलाया जाता है। ऐसा ही निर्देशक के परीक्षण में मजाक किया जाएगा, क्योंकि जैसा कि आपने सुझाव दिया है, यह पहले से ही नियंत्रक के परीक्षण में परीक्षण किया गया है। – Evgenii