2012-03-30 4 views
2

mockDomain предлагает динамические методы, такие как save(), validate(), ... для класса домена.Необходимо ли удалить metaClass после использования mockDomain в модульных тестах Grails?

Необходимо ли удалить метаклассы для каждого класса, который я издеваюсь, используя 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, который отбрасывает текущий метаклас и заменяет новый, так что на tearDown тест может восстановить старый metaClass для вас. Когда вам нужно добавлять методы в metaClass самостоятельно, вы можете вызвать registerMetaClass (прежде чем добавлять свои изменения, конечно), и как только это будет сделано, тест проведет очистку.

0

Nope. Из любопытства, что заставило бы вас поверить, что вам нужно это сделать?

+0

Обсудить с товарищем по работе. Я был прав, и это не обязательно –

+0

Я тоже был прав, но я думаю, что другие ребята ответили лучше для вас? – Gregg

+0

@Gregg: Да, вы правы, и вы были первыми. но ответы с объяснением обычно лучше. –