2010-05-24 12 views
7

मैं "withCriteria" बंद करने का परीक्षण करना चाहता हूं और मुझे यकीन नहीं है कि इसके बारे में कैसे जाना है। मैं देखता हूं कि क्रिटिया कॉल के साथ कैसे नकल करना है, लेकिन बंद होने के भीतर कोड का परीक्षण नहीं करना है। परीक्षण के दौरान "withCriteria" निष्पादित करते समय, मैं एक MissingMethodException प्राप्त करता रहता हूं, भले ही कोड निष्पादन के सामान्य प्रवाह के तहत ठीक चलता है। कोई विचार? धन्यवाद! स्टीवक्रिएटिया परीक्षण के साथ Grails

उत्तर

14

मैं उस मार्ग पर नहीं जाऊंगा। इसके बजाय मैं क्वेरी को डोमेन क्लास में स्थिर खोजक विधि के रूप में ले जाऊंगा और वास्तविक डेटा के साथ सीधे एकीकरण परीक्षण में इसका परीक्षण करूंगा। फिर जब आप नियंत्रक या सेवा परीक्षण में कॉल होते हैं तो आप आसानी से सहायक विधि का नकल कर सकते हैं।

class YourDomainClass { 

... 
    static List<YourDomainClass> findFooBar() { 
     YourDomainClass.withCriteria { 
     ... 
     } 
    } 
} 
फिर एक इकाई परीक्षण में

:

def results = [instance1, instance2, instance3] 
YourDomainClass.metaClass.static.findFooBar = { -> results } 

इस तरह से आप का परीक्षण है कि क्वेरी एकीकरण परीक्षण में इन-स्मृति डेटाबेस के खिलाफ काम करता है, लेकिन यह इकाई परीक्षण में यह नकली आसान है।

0

वर्तमान समय में हाइबरनेट मानदंडों के लिए कोई नकली कार्यान्वयन नहीं है। आपको एकीकरण परीक्षणों का उपयोग करने की आवश्यकता होगी। हालांकि, यह एक स्थिर खोजक विधि बनाने की बर्ट की सिफारिश कोड संगठन के लिए एक अच्छा है। इसके लिए आपको एक अच्छा वाक्यविन्यास के लिए http://www.grails.org/1.2+Release+Notes पर वर्णित नामित प्रश्नों को भी देखना चाहिए।

1

बर्ट के जवाब देने के लिए इसके अलावा, नामित प्रश्नों की जाँच के रूप में यहाँ वर्णित:

http://blog.springsource.com/2010/05/24/more-grails-1-3-features/

फिर आप के रूप में बर्ट द्वारा वर्णित अपने इकाई परीक्षण में संपत्ति/विधि का उपयोग नकली कर सकते हैं।

+3

नामित प्रश्नों महान हैं, लेकिन मैं उन्हें इकाई परीक्षण में उपहास करने के लिए सक्षम नहीं था। क्या आपको वह काम मिल गया या आपने एकीकरण परीक्षण के साथ चिपकाया? – j4y

1

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

Groovy/Grails testing DSLs

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