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
    }

}

最佳答案

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

关于unit-testing - 在Grails单元测试中使用mockDomain之后是否有必要删除metaClass?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9941548/

10-10 15:32