2011-07-26 8 views
10

मैं जावास्क्रिप्ट के लिए एक परीक्षण पुस्तकालय की तलाश में हूं जो स्पेक-परीक्षण उपयोगकर्ता इंटरैक्शन जैसे ड्रैग और ड्रॉप, होवर, डबल/सिंगल क्लिक और कैनवास पर ड्राइंग के लिए काम करेगा। मैंने jspec और jasmine समेत कुछ पुस्तकालयों को देखा है, लेकिन दोनों यूनिट परीक्षण के आधार पर अधिक प्रतीत होते हैं।उच्चतम जावास्क्रिप्ट घटनाओं का परीक्षण

यदि मैंने इस तथ्य को अनदेखा किया है कि उपर्युक्त पुस्तकालयों में से कोई भी ऐसे परीक्षण का समर्थन करता है तो मुझे एक उदाहरण पसंद आएगा।

संपादित


तो मैं कल रात देखने का एक बहुत कुछ किया है और वास्तव में कुछ भी भर में नहीं आया था। मैं चाहूंगा कि जैस्मीन जैसे कुछ की तुलना में उच्च स्तर पर उपयोगकर्ता इंटरैक्शन को अनुकरण करना संभव हो, जो कैपिबरा शैली है, यह समझ में आता है कि यह सिर्फ डोम के साथ बातचीत करता है।

मुझे एक लाइब्रेरी चाहिए जो वास्तव में माउस को नीचे रखती है -> माउस चाल -> माउस अप इवेंट चेन।

क्या ऐसा जादुई निर्माण मौजूद है?

पोस्ट इनाम संपादित


तो, मैं जे एस परीक्षण पुस्तकालयों के साथ प्रयोग करने के लिए जारी रखा और वास्तव में वे कैसे एचटीएमएल 5 कैनवास का उपयोग कर चारों ओर फ़ंक्शन के साथ खुश नहीं हूँ है। ऐसा लगता है कि कैनवास के साथ आप चमेली में घटनाओं का परीक्षण नहीं कर सकते क्योंकि चमेली कैनवास शुरू नहीं करेगा।

मुझे यह नहीं लगता कि आपको वास्तव में एप्लिकेशन कोड का परीक्षण करने के बजाय "html" फिक्स्चर का उपयोग करना होगा। यदि आप अपने ऐप में जेएस को एकीकृत करने की कोशिश कर रहे हैं तो यह पीछे की ओर लगता है। Spec परीक्षण के लिए यह समझ में आता है लेकिन वेब ढांचे के बीडीडी परीक्षण से यह वास्तव में परीक्षण के लिए एप्लिकेशन दृश्यों का उपयोग करना होगा।

फिर से ऐसा राक्षस मौजूद है या बादलों में मेरा सिर है? जावास्क्रिप्ट में

+5

क्या आपने सेलेनियम या वाटर की कोशिश की है? –

+0

मैंने सेलेनियम का उपयोग किया है, लेकिन मुझे जेएस के लिए सेलेनियम लाइब्रेरी का पता नहीं है, यह अच्छा है कि मैंने अभी तक अन्य परीक्षण ढांचे को आगे बढ़ाने के लिए वेब ड्राइवरों के लिए उपयोग किया है। Watr मैंने बस Google को करने की कोशिश की और कुछ भी नहीं मिला ताकि एक लिंक अच्छा लगे। Ty – austinbv

+0

क्षमा करें, मैंने इसे गलत लिखा है। http://watir.com/ –

उत्तर

2

क्या आपने PhantomJS या ZombieJS को आजमाया है? मैंने विशेष रूप से प्रेत के बारे में अच्छी बातें सुनी हैं।

=============

एक और सुझाव: सेलेनियम प्लग इन/मैक्रो। www.seleniumwiki.com/selenium-rc/selenium-mousedownat-mousemoveat-and-mouseupat-example/ या glauche.de/2009/09/09/drag-drop-with-selenium/।

0

नकल उपयोगकर्ता व्यवहार कस्टम Event Object रों बनाने के लिए आप की आवश्यकता होगी, एक Element पर उन्हें भेजने, और सबसे महत्वपूर्ण जिनमें से उनके गुणों को संशोधित कर रहे तथापि मानकों में केवल पढ़ने के अनुरूप ब्राउज़र।

आईई में 5 + वे परिवर्तनीय होने लगते हैं लेकिन वह स्पष्ट रूप से पार ब्राउज़र का परीक्षण शामिल नहीं है।

तो, मुझे नहीं लगता कि क्या आपके मन में है संभव है।


संपादित: इसके बारे में सोच रही थी (और सेलेनियम Firefox विस्तार के लिए दस्तावेज़ में देख), स्पष्ट रूप से आप जो किसी दिए गए कार्यक्रम के अनुसार प्रोग्राम के रूप में कस्टम बनाना होगा एक जावास्क्रिप्ट प्रोग्राम लिखने के लिए सक्षम हो जाएगा Event Object एस जो उपयोगकर्ता व्यवहार को अनुकरण करता है।

हालांकि, मुझे यकीन नहीं है कि सेलेनियम क्या करता है या - अधिक महत्वपूर्ण बात यह है कि क्या यह करने का एक विश्वसनीय तरीका है। एएसओ यह अनिवार्य रूप से "faking interaction with the DOM" है जिसका आपने फैसला किया है।

बीटीडब्ल्यू, मुझे यह सही तरीके से प्राप्त करने दें: इसलिए आप अनिवार्य रूप से अपने एप्लिकेशन के जावास्क्रिप्ट भाग का परीक्षण करने के लिए जावास्क्रिप्ट लाइब्रेरी चाहते हैं; लेकिन, आप यह भी ब्राउज़र स्तर पर काम करना चाहते हैं (डीओएम इंजन के स्तर पर नहीं), यानी एक वास्तविक उपयोगकर्ता इंटरैक्शन को अनुकरण करने के लिए जैसे कि यह ब्राउज़र द्वारा कब्जा कर लिया गया था?

+0

आप घटना वस्तुओं पर गुणों को संशोधित नहीं करते हैं। जब आप पहली बार ईवेंट को प्रारंभ करते हैं तो आपको गुणों के मानों के साथ प्रारंभ करना होगा। जैसे ई = document.createEvent ("UIEvent"); e.initMouseEvent (...)। इसके अलावा, घटनाएं किसी भी नोड या सार दृश्य (जैसे दस्तावेज़, विंडो) पर काम करती हैं, केवल तत्वों पर नहीं। –

+0

@ एली ग्रे: यही वह है जो मैं यहां कह रहा हूं। आप उन्हें संशोधित नहीं करते हैं। हालांकि, ओपी क्या करना चाहता है, इसके प्रयास में आपको करना होगा। आपका दूसरा थोड़ा अपरिचित लगता है: आप किसी अन्य चीज़ पर 'ईवेंट' को पंजीकृत नहीं कर सकते हैं, फिर 'एलिमेंट' (या - अपवादों के साथ - 'सार दृश्य') और न ही आप इसे प्रेषित कर सकते हैं। – FK82

+0

कैपिबेरा और सेलीनम जैसी चीजें ब्राउज़र के साथ माउस ईवेंट कैसे पंजीकृत करती हैं? – austinbv

-1

जाओ और jQuery और Dojo देखें। या आप jsfiddle साइट पर जा सकते हैं और एक नज़र डालें। उनके पास पुस्तकालयों का एक सेट है और आप पुस्तकालयों को डाउनलोड किए बिना ऑनलाइन परीक्षण कर सकते हैं।

+1

आप सही प्रकार के परीक्षण के बारे में सोच नहीं रहे हैं – austinbv

0

मैंने सफलतापूर्वक कोड का परीक्षण किया जिसके लिए जैस्मीन और jQuery का उपयोग करके माउस ईवेंट की आवश्यकता थी।

http://api.jquery.com/category/events/event-object/

बस बना सकते हैं और इस तरह से ट्रिगर घटनाओं:

// Create a new jQuery.Event object with specified event properties. 
    var e = jQuery.Event("keydown", { keyCode: 64 }); 

    // trigger an artificial keydown event with keyCode 64 
    jQuery("body").trigger(e); 

फिर गुण की जाँच करने के जैस्मीन का उपयोग करें। बस एक नोट के रूप में, आप एनीमेशन जांच करने की जरूरत है, तो आप समय इस तरह नकली कर सकते हैं:

//http://groups.google.com/group/jasmine-js/browse_thread/thread/dbdc5ad1c1514322

beforeEach(function() { 
    jasmine.Clock.useMock(); 
}); 
//... call the code that calls setTimeout 
jasmine.Clock.tick(500); // advance 500 msec 
2

मैंने इस समस्या का एकमात्र अच्छा समाधान देखा है: DOH Robot। यह जावा एप्लेट चलाता है, जो वास्तविक जावास्क्रिप्ट घटनाओं को उत्सर्जित करने और वास्तविक उपयोगकर्ता व्यवहार (ड्रैग-एंड-ड्रॉप परीक्षण सहित) को अनुकरण करने की अनुमति देता है।

डीओएच डोजो पर निर्भर नहीं है, इसलिए आप इसे किसी भी प्रोजेक्ट में उपयोग कर सकते हैं। दुर्भाग्यवश यह व्यापक रूप से उपयोग नहीं किया जाता है, हालांकि यह वास्तव में अच्छा परीक्षण ढांचा है।

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