2011-05-12 52 views
0

我試圖在單元測試期間訪問保存的域對象,因此當控制器方法將域類保存在單元測試範圍之外時,我可以訪問它來測試設置的屬性。grails/groovy:單元測試時如何訪問保存的域對象?

一直在查看domainClassesInfo(DefaultArtefactInfo),savedMetaClasses來詢問此問題,但沒有成功。

這似乎喜歡的事,應該是很容易 -

void testMyControllerMethod() { 
    mockDomain(MyDomainClass) 
    controller.myControllerMethod() 
    //get MyDomainClass instance here for test assertions 
    //assertEquals value1, myDomainClass.attribute1 
} 

然後控制器:

def MyControllerMethod() { 
    //do stuff 
    MyDomainClass myDomainClass = new MyDomainClass(attribute1:value1,attribute2:value2) 
    myDomainClass.save() 
} 

任何思考如何提取保存域類大加讚賞

回答

2

如果控制器是唯一一個保存MyDomainClass的新實例,那麼你應該可以這樣做:

void testMyControllerMethod() { 
    mockDomain(MyDomainClass) 
    controller.myControllerMethod() 
    //get MyDomainClass instance here for test assertions 
    def result = MyDomainClass.list()[0] 

    assertEquals value1, result.attribute1  
} 
+0

謝謝MyDomainClass.list()工作絕對對待,並避免需要複雜的解決方法和集成測試。非常感謝你 – Alex 2011-05-12 18:16:06