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