2012-12-04 21 views
31

आगे बढ़ने से पहले महत्वपूर्ण घटनाओं के लिए प्रतीक्षा करना, लोग एंजुलर ई 2 परीक्षणों को कैसे लिख रहे हैं जिनमें UI ईवेंट के अनुक्रम को ट्रिगर करना शामिल है? परिदृश्य की एसिंक प्रकृति इसे कठिन बना देती है।कोणीय-परिदृश्य e2e परीक्षण -

विवरण: मैं एक ऐप के लिए परीक्षण लिख रहा हूं जिसमें एक विशेष रूप से गति संपादन में मदद करने के लिए बहुत सारी महत्वपूर्ण हैंडलिंग है। मैंने परिदृश्य डीएसएल (नीचे देखें) में एक कीबोर्ड एक्सटेंशन खींच लिया है, लेकिन केवल परीक्षण की पहली कुंजी घटना का कोई प्रभाव पड़ता है। के लिए महत्वपूर्ण मार्ग को फोकस (हालांकि वहाँ स्क्रीन पर एक है): अर्थात

keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down 
expect(element('*:focus').text()).toEqual('00:04'); 
keyboard().keydown(null, 'keydown', 40, false, true); // ctrl-down 
expect(element('*:focus').text()).toEqual(''); // but equals 00:04 

दूसरा keydown कुछ भी नहीं है, क्योंकि यह एक * नहीं मिल रहा है। भ्रामक।

angular.scenario.dsl('keyboard', function() { 
    var chain = {}; 
    chain.keydown = function(selector, keyEvent, keyCode, shift, ctrl) { 
     return this.addFutureAction("keyEvent", function($window, $document, done) { 
      var jQuery = $window.$; 
      var e = jQuery.Event(keyEvent); 
      e.keyCode = keyCode; // # Some key code value 
      e.altKey = false; 
      e.ctrlKey = ctrl; 
      e.shiftKey = shift; 
      if (selector == null) selector = '*:focus'; 
      var j = jQuery(selector); 
      if (j == null) j = jQuery('body'); 
      j.trigger(e); 
      done(); 
     }); 
    }; 
    return function() { 
     return chain; 
    }; 
}); 
+0

तो समस्या शायद आपके कोड पर है, न कि आपके परीक्षण पर। क्या आप कृपया अपने ऐप पर 'कुंजीडाउन' ईवेंट क्या कर रहे हैं पोस्ट करें? मैंने आपके परिदृश्य परीक्षण की प्रतिलिपि बनाई और, एक 'browser.navigateTo' जोड़ा, मेरे एचटीएमएल ('tabindex =" 0 "') पर एक एकल' div' जोड़ा, और एक सरल घटना जो '' और '00 के बीच सामग्री को टॉगल करती है: 40 'keydown पर। सब कुछ ठीक काम किया। –

उत्तर

1

उपयोगकर्ता इस सवाल का त्याग दिया है लगते हैं, लेकिन जैसा कि मैंने कहा, यह शायद उसकी keydown ईवेंट हैंडलर साथ एक मुद्दा है।

एक ही कोड के साथ Plnker बनाया और सबकुछ अपेक्षित काम करता है।

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