2012-03-30 52 views
2

mockDomain爲域類提供動態方法,如save(),validate() ......。在Grails單元測試中使用mockDomain之後,是否需要刪除metaClass?

是否有必要刪除我使用mockDomain模擬每個類的元類?

class UserTests extends GrailsUnitTestCase { 

    protected void setUp() 
    { 
     super.setUp() 
     mockDomain User 
     mockDomain Address 
    } 

    protected void tearDown() 
    { 
     super.tearDown() 
     def remove = GroovySystem.metaClassRegistry.&removeMetaClass 
     remove User 
     remove Address 
    } 

} 

回答

3

你不需要那樣做。 mockDomain方法調用registerMetaClass,它存儲當前的metaClass並替換一個新的,以便在tearDown測試可以爲您恢復舊的metaClass。當你需要自己向metaClass添加方法時,你可以調用registerMetaClass(當然你需要添加你的修改之前),一旦完成了測試就會完成清理工作。

0

沒有。出於好奇,什麼會導致你相信你需要這樣做?

+0

與同事討論。我是對的,沒有必要 – 2012-03-30 12:32:24

+0

我也是對的,但我想其他人回答對你更好? – Gregg 2012-03-30 13:35:23

+0

@Gregg:是的,你是對的,你是第一個。但解釋通常會做得更好。 – 2012-03-30 13:44:16

相關問題