2012-03-30 4 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를 복원 할 수 있도록합니다. 메타 클래스에 메서드를 추가 할 필요가있을 때 registerMetaClass를 호출 할 수 있습니다 (변경 사항을 추가하기 전에). 일단 완료되면 테스트가 정리를 수행합니다.

0

아니요. 호기심에서, 당신은 당신이 그것을 할 필요가 있다고 믿게 만들 것입니까?

+0

직장 동료와의 토론. 나는 옳았고 반드시 필요하지는 않다. –

+0

나도 옳았지 만 다른 사람들이 대답하는 것이 좋을 것이라고 생각하니? – Gregg

+0

@ 그레그 : 예, 맞았습니다. 일반적으로 설명이있는 답변이 더 좋습니다. –

관련 문제