是否有必要在Grails单元测试中使用mockDomain后删除metaClass?

时间:2012-03-30 10:50:55

标签: unit-testing grails groovy mocking teardown

mockDomain为域类提供了save()validate(),...等动态方法。

是否有必要使用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
    }

}

2 个答案:

答案 0 :(得分:3)

你不需要这样做。 mockDomain方法调用registerMetaClass,它会隐藏当前的metaClass并替换一个新的metaClass,因此在tearDown上,测试可以为您恢复旧的metaClass。当你确实需要自己向metaClass添加方法时,可以调用registerMetaClass(当然是在添加更改之前),一旦完成,测试就会进行清理。

答案 1 :(得分:0)

不。出于好奇,会让您相信自己需要做什么?