2012-10-23 26 views
7

मैं एक नामांकित विधि पर यूनिट परीक्षण करने की कोशिश कर रहा हूं और यह काम नहीं कर रहा है क्योंकि मैं विधि grails.orm.HibernateCriteriaBuilder.createAlias ​​का उपयोग कर रहा हूं जो ऐसा प्रतीत नहीं होता Grails द्वारा पाया जा सकता है: "विधि का कोई हस्ताक्षर नहीं: grails.gorm.CriteriaBuilder.createAlias ​​()"Grails यूनिट टेस्ट "CreateAlias" काम नहीं करता

मुझे लगता है कि समस्या यह है कि यूनिट परीक्षण करते समय और कक्षा का मज़ाक उड़ाते हुए, यह विधि को खोजने की कोशिश कर रहा है "grails.gorm.Criteriabuilder" कक्षा और grails.orm.HibernateCriteriabuilder कक्षा, क्यों ?? इसे हल करने के लिए कोई विचार?

class Book{ 
    static namedQueries = {  
     testMethod() 
     { 
     createAlias('name', 'james') 
     } 
    } 
} 



@Mock([Book]) 
class BookTests{ 
    @Test 
    void myTest() { 
     Book.testMethod(); 
    } 
} 

त्रुटि: विधि का कोई हस्ताक्षर नहीं: grails.gorm.CriteriaBuilder.createAlias ​​()

उत्तर

2

हम इस समझ नहीं सकता है या तो; हमें संदेह है कि यह सिर्फ GORM यूनिटटेस्ट कार्यान्वयन से गायब है। लेकिन यदि आप सिर्फ एक संगठन से पूछना चाहते हैं, Grails में आपको उपनाम की आवश्यकता नहीं है। देखें:

Book.createCriteria { 
    eq("title", "One Hundred Years of Solitude") 
    author { 
     eq("name", "Gabriel García Márquez") 
    } 
} 
+0

दरअसल, कभी-कभी आपको उपनाम की आवश्यकता होती है - बाएं जुड़ने का यह एकमात्र तरीका है। तो '' 'Book.withCriteria {createAlias ​​('लेखक', 'ए', JoinType.LEFT_OUTER_JOIN) या {isNull ('a.name') eq ('a.name', 'Fred')}}' '' परीक्षण करने में सक्षम होने के लिए काफी उपयोगी हो, लेकिन जहां तक ​​मुझे पता है, यह किसी भी तरह से टेस्ट करने योग्य नहीं है - कोई मुझे दिखाएं कि मैं गलत हूं! –