2013-05-05 49 views
0

我正在嘗試爲測試我的Grails服務創建單元測試。我有以下的測試測試Grails服務時創建域對象

@TestFor(ActivityProcessorService) 

@Mock([ActivityProcessorService, Activity]) 
class ActivityProcessorServiceTests extends GrailsUnitTestCase{ 
void setUp() { 

} 

void tearDown() { 
    // Tear down logic here 
} 

void testGenerateDescription() { 

    def activity = new Activity(
     //new activity details 
     ) 

    def service = mockFor(ActivityProcessorService) 
    def description = service.generateDescription(activity) 

    assert description == "something..." 
} 
} 

創建Activity對象和填充所有必填字段時,我的問題是,它要求我創建其他幾個對象,如UserTask和其他一些人,這些對象可以是相當大,這對影響敲門聲,他們需要的對象等

的創作是沒有辦法,我可以創造一個Activity對象,但省略完全填充的對象,如TaskUser等大型對象的創建方式?

E.g

def activity = new Activity(
     task: new Task(), 
     user: new User(), 
     ... and so on 
     ) 

,其中任務和用戶都嘲笑起來,而不是創建完整的對象,如

def activity = new Activity(
     task: new Task(
       title : "task title" 
       description : "task description" 
       ... and so on 
      ), 
     user: new User(
       firstName : "john", 
       lastName : "smith", 
       ... and so on 
      ), 
     ... and so on 
     ) 

,因爲這將使相當大的開銷,建立這樣一個小而簡單的測試。

回答

1

請參閱本release notes,你有@Mock@Build(編譯 - 測試 - 數據插件:2.0.5)手動指定TaskUser

+0

感謝,虐待記住這一點,但有辦法模擬「Task」和「User」之類的東西,而不必填充這些對象的所有字段,因爲它們是相當大的對象,對於這樣一個小的測試看起來有些過分 – 2013-05-05 11:38:17

+1

您可以使用[build-test-data] ://grails.org/plugin/build-test-data)插件來克服這個問題。 – dmahapatro 2013-05-05 12:21:43

+0

啊對不起,沒有看到你的第一個評論中的插件,謝謝,看起來很完美! – 2013-05-05 12:51:21