2015-08-22 8 views
5

ब्लॉक मैं सिर्फ देखा है कि स्पॉक की स्थिति पर जोर नहीं पड़ता अगर मैंस्थिति उम्मीद

def myTest() { 
    given: 
    a = true 

    expect: 
    if (a) { 
     1 == 2 
    } 
    else { 
     1 == 1 
    }  
} 

ऊपर परीक्षा में के रूप में की उम्मीद ब्लॉक में एक if खंड जोड़ने पारित करेंगे के बाद से की स्थिति की जाँच नहीं कर रहे हैं । या शर्त जांच अग्रेषित नहीं की जाती है अगर बयान जारी करें।

यह करने के लिए वैकल्पिक हल करता है, तो ब्लॉक के अंदर assert बयान को जोड़ने के लिए है, यानी 1 == 2.

क्या मुझे इसमें रुचि है पर जोर, क्यों कार्यक्षमता इस तरह है है? क्या इसका काम करने का कोई और तरीका है? मुझे लगता है कि अगर स्टेटमेंट कार्यक्षमता है तो ग्रोवी के साथ इसका कुछ संबंध है, लेकिन मुझे भाषा विवरण अच्छी तरह से नहीं पता है। सबसे अधिक संभावना है कि अगर कथन स्पॉक की उम्मीद ब्लॉक के साथ काम करने के लिए कुछ भी वापस नहीं करता है।

+2

प्रश्न का उत्तर नहीं दे रहा है, लेकिन आप इस तरह क्यों परीक्षण करेंगे? क्या आपको ज्ञात चीजों का परीक्षण नहीं करना चाहिए? यदि अलग-अलग पथ हैं, तो क्या वे अलग-अलग परीक्षण नहीं होने चाहिए? –

+1

सेकेंडिंग किस समय कहा गया। यदि परीक्षण विफल रहता है तो क्या आप यह बता सकेंगे कि एक्स चीजों में से एक की बजाय वास्तव में क्या असफल रहा? शायद यह सिर्फ एक उदाहरण था लेकिन प्रत्येक परीक्षण केवल एक चीजों का परीक्षण करना चाहिए। शायद आपको कुछ मूल्यों के साथ समान परीक्षण की आवश्यकता है? यदि ऐसा है तो आपको स्पॉक में कहां बयान देना चाहिए। –

+0

@tim_yates @Aseem शर्तों के लिए जांच करते समय एक कथन का उपयोग करने का कारण परीक्षण इनपुट की जटिलता के कारण है और केवल कुछ असाधारण मामले अन्य शाखा में आते हैं, जो मूल रूप से आलस्य के लिए उबाल जाता है :) उपयोग का मामला कुछ है जैसे कि 'उस स्थिति को जांचें ए एक्स को तब तक पूरा नहीं किया जाता है जब तक एक्स, उस स्थिति की जांच करें कि बी स्थिति को पूरा नहीं किया गया है'। जहां ब्लॉक के साथ हल किया जा सकता है, लेकिन मेरे स्वाद के लिए यह भी verbose है। – kaskelotti

उत्तर

6

इसमें ग्रोवी के साथ कुछ लेना देना नहीं है। स्पॉक का documentation स्पष्ट रूप से बताता है कि then और expect में स्थितियों के रूप में केवल शीर्ष-स्तरीय अभिव्यक्तियों को माना जाता है। यह डिजाइन द्वारा है।

शीर्ष के लिए लिंक खोजें।

+0

हां, यह बताता है कि इन ब्लॉकों में सभी शीर्ष-स्तरीय अभिव्यक्तियों को पूरी तरह से शर्तों के रूप में माना जाता है। यदि उपर्युक्त उदाहरण में यदि ब्लॉक को टर्नरी ऑपरेटर द्वारा प्रतिस्थापित किया गया है, तो कीवर्ड डालने के साथ कोई स्पष्ट स्थिति आवश्यक नहीं है। एक सहायक विधि होने के समान स्थिति की जांच करने के समान, किसी को कथन में स्पष्ट आवेषण की आवश्यकता होती है। असल में मैं जानना चाहता हूं कि दोनों के बीच एक लिंक है, यानी अगर कथन वास्तव में ग्रोवी में वापसी के रूप में शून्य के साथ एक फंक्शन कॉल है। – kaskelotti

+1

नहीं, यह नहीं है। यह जावा –

+0

जैसा ही है, भविष्य के संदर्भ के लिए आप यह जानने के लिए http://www.groovy-lang.org/differences.html देख सकते हैं कि जावा की तुलना में कुछ गड़बड़ी में अलग-अलग काम करता है या नहीं। –

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