2014-09-29 8 views
5

मैं सिर्फ बहुलक से शुरू कर रहा हूं। मैं एक कस्टम तत्व का परीक्षण करने की कोशिश कर रहा हूं जिसमें निर्भरता है और मैं इन्हें नकली/नकली बनाना चाहता हूं। मुझे कोर-एजेक्स कार्यान्वयन को नकल करने के तरीके पर स्कॉट माइल्स की सिफारिश मिली है। मैंने सोचा कि मैं आसानी से उस पैटर्न का पालन कर सकता हूं लेकिन यह तब तक काम करता है जब तक मेरा तत्व मॉक करने के लिए आयात नहीं करता है (इस मामले में कोर-एजेक्स) तत्व। यदि यह आयात करता है, तो जब परीक्षण चलाने की कोशिश करता है तो मुझेपॉलिमर यूनिट परीक्षण मॉकिंग निर्भरता

'अनकॉट नहीं किया गया समर्थन त्रुटि:' दस्तावेज़ 'पर' रजिस्टर एलिमेंट 'निष्पादित करने में विफल: पंजीकरण' कोर-AJAX 'प्रकार के लिए विफल रहा। उस नाम वाला एक प्रकार पहले ही पंजीकृत है। '

यदि मैं दस्तावेज़ की तरह कुछ कर सकता हूं। कोर-एजेक्स तत्व को पंजीकृत करें और इसे मेरे परीक्षण में फिर से आयात करें, आईडी एक बहुत ही खुश देव बनें !!! पॉलिमर भयानक है लेकिन अगर मैं इसे यूनिट का परीक्षण नहीं कर सकता, तो यह प्रमुख जोखिम प्रस्तुत करता है (कम से कम एक ऐप बनाने के दौरान जिसे बनाए रखा/बदला जाना आवश्यक है)

आप इस बारे में कैसे काम कर रहे हैं? मैं पॉलिमर और पॉलिमरलैब तत्व रेपो में खुदाई कर रहा हूं और उनमें से अधिकांश परीक्षणों की कमी है। अब तक मुझे यह नहीं पता कि इसे कैसे किया जाए।

सहायता के लिए धन्यवाद!

सैंटियागो

Scotts 'सिफारिश था:

इसके बजाय कोर-ajax/कोर-ajax.html आयात करने की

, अपनी खुद की कोर-ajax तत्व पैदा करते हैं।

<polymer-element name="core-ajax" attributes="response"> 
<script> 
    Polymer('core-ajax', { 
    attached: function() { 
     this.response = ['a', 'b', 'c']; 
    } 
}); 
</script> 
</polymer-element> 

जाहिर है, यह केवल एक उदाहरण है, वास्तविक कार्यान्वयन वांछित मजाकिया व्यवहार पर निर्भर करता है।

यह हल करने का यह एक ही तरीका है, कई अन्य हैं। मुझे यह जानने में दिलचस्पी है कि आपको क्या मिल रहा है (इन) सुविधाजनक।

+0

ditto। डबल पर पूरी त्रुटियों में दर्दनाक है। सुनिश्चित नहीं है कि अभी तक इस बारे में कैसे काम करें। – David

+0

संदर्भित समाधान https://stackoverflow.com/questions/24531473/how-do-i-mock-polymer-core-ajax-for-unit-testing – dskrvk

उत्तर

0

आप इसे जेएस के साथ अनिवार्य रूप से पंजीकृत करने का प्रयास कर सकते हैं या आपके द्वारा परीक्षण किए जा रहे प्रत्येक तत्व को बढ़ा सकते हैं और अपनी संपत्तियों या विधियों को ओवरराइड कर सकते हैं जिन्हें आप नकल करना चाहते हैं। मुझे लगता है कि यह बस इसके बारे में है। यह मेरा गूगल के नक्शे के कस्टम तत्व की तरह है, मैं गूगल के नक्शे के आयात और इतने की तरह सामान के आसपास बदल:

<polymer-element name="core-gmaps" attributes="lat long mapzoom markerlat markerlong markertitle" extends="google-map"> 
    <template> 
     <style> 
     :host{ 
      width: 100%; 
     } 
     #vivaMap { 
      display: block; 
      height: 100%; 
      width: 100%;    
     } 
     </style> 
     <google-map id="vivaMap" latitude="0" longitude="0" zoom="18"> 
      <google-map-marker id="vivaMarker" title="" latitude="0" longitude=""></google-map-marker> 
     </google-map> 
    </template> 
    <script> 

    Polymer("core-gmaps",{ 
    ready: function(){ 

     var map = this.$.vivaMap; 
     map.latitude = Number(this.getAttribute('lat')); 
     map.longitude = Number(this.getAttribute('long')); 
     map.zoom = Number(this.getAttribute('mapzoom')); 

     var mapMarker = this.$.vivaMarker; 
     mapMarker.latitude = Number(this.getAttribute('markerlat')); 
     mapMarker.longitude = Number(this.getAttribute('markerlong')); 
     mapMarker.title = this.getAttribute('markertitle'); 
     /*map.addEventListener('google-map-ready', function(e) { 
      console.log('Map loaded!'); 
     });*/ 
    } 
    }); 
    </script> 
</polymer-element> 

मैं अभी भी कर रहा हूँ यकीन नहीं अगर यह पेशेवर इसके लायक था (मैं इसे प्रयोग नहीं खत्म हो सकता है) , लेकिन यह पूरी तरह से बौद्धिक रूप से लायक था। कुछ अच्छी चीजें सीखी। चूंकि मैं Google मानचित्र का विस्तार कर रहा हूं, यह एक बार और केवल एक बार पंजीकृत हो जाता है।

संपादित करें:
मेरे मामले में मैं तैयार घटना का इस्तेमाल किया क्योंकि मैं नक्शा दर असल में हेरफेर नहीं कर सकता है यह कम से कम के लिए तैयार किया जा रहा बिना। लेकिन आप जीवन चक्र विधियों से ईवेंट कॉलबैक चुन सकते हैं।
सूची here है।
पीएस: हाँ, मैंने डेटा बाइंडिंग का उपयोग नहीं किया क्योंकि मैं नहीं कर सका। गूगल मैप एपीआई एनएएन होने के बारे में शिकायत कर रहा था इसलिए मुझे इसे डालना पड़ा।

1

यह प्रश्न थोड़ा पुराना है। चित्रित मैं एक अद्यतन प्रदान करता हूं क्योंकि यह एक बहुत ही सामान्य स्थिति है।

पॉलिमर सीएलआई यूनिट परीक्षण पॉलिमर तत्वों के लिए अनुशंसित दृष्टिकोण है। परीक्षण के लिए उपयोग की जाने वाली अंतर्निहित लाइब्रेरी को वेब-घटक-परीक्षक (डब्ल्यूटीसी) कहा जाता है। डब्लूसीटी के पास स्टब तत्वों के लिए समर्थन है।असल में, यदि आपके परीक्षणों में से कोई एक डेटा वापस करने के लिए किसी अन्य तत्व पर निर्भर करता है, तो आप उस तत्व का एक स्टब बना सकते हैं जो हमेशा लगातार डेटा देता है। ठूंठ तत्व निर्दिष्ट करने के लिए इकाई परीक्षण कोड में

जे एस:

setup(function() { 
    replace('paper-button').with('fake-paper-button'); 
}); 

तत्व परीक्षण किया जाना:

:

<dom-module id='x-el'> 
    <template> 
    <paper-button id="pb">button</paper-button> 
    </template> 
</dom-module> 

परीक्षण रनटाइम पर, सामग्री टेम्पलेट के रूप में बाहर मुहर लगी किया जाएगा

<dom-module id='x-el'> 
    <template> 
    <fake-paper-button id="pb">button</fake-paper-button> 
    </template> 
</dom-module> 

https://www.polymer-project.org/1.0/docs/tools/tests#create-stub-elements

+0

से है क्या आप नकली-पेपर-बटन का उदाहरण प्रदान कर सकते हैं ऐसा लगेगा? – abendigo

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