2013-11-15 16 views
5

मैं कर्म परीक्षण मामलों का उपयोग करके कोणीय में फोकस ईवेंट का परीक्षण कर रहा हूं। लेकिन तत्व केंद्रित नहीं हो रहा है। element.focus() के बाद और यह जांचें कि तत्व केंद्रित है या नहीं, मुझे झूठा लगता है। और document.activeElement उस बिंदु पर पूरे शरीर है।कर्म परीक्षण मामले: फोकस ईवेंट

कृपया एक समाधान का सुझाव दें। धन्यवाद

उत्तर

7

(इस उत्तर Testing for focus an AngularJS directive से प्रेरित)

आप इसके साथ खेलने के लिए document.activeElement के लिए क्रम में दस्तावेज़ के मुख्य भाग अपने तत्व जोड़ने के लिए की जरूरत है। इसके अलावा

element.appendTo(document.body); 

, यदि आप इकाई परीक्षण में यह कर रहे हैं मुझे लगता है कि आप परीक्षण के बाद तत्व निकाल सिफारिश करेंगे, अन्यथा प्रत्येक परीक्षा के लिए एक और तत्व जोड़ देगा:

इससे पहले कि आप element.focus() कहते हैं, ऐसा करने के शरीर (और यह आपके अन्य परीक्षणों के परिणामों को प्रभावित कर सकता है)।

afterEach(function() { 
    element.remove(); 
} 
+2

यह मेरे लिए (ज्यादातर) काम करता है। मैं JQuery का उपयोग नहीं कर रहा हूं, इसलिए 'element.appendTo' ने इसे काट नहीं दिया। मुझे 'document.body.appendChild (तत्व [0]) करने की आवश्यकता है;' – mgilson

संबंधित मुद्दे