unit-testing - 在Grails单元测试中使用mockDomain后是否需要删除metaClass?

标签 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
    }

}

最佳答案

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

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

相关文章:

python - Pyramid - 为文件上传表单编写单元测试

hibernate - Grails 在域[re​​wards.OnlineOrder] 引用[rewards.OrderItem] 上缺少列[order_items_order_item] 的类型或列

intellij-idea - 无法使用Gradle解析库。使用Grape解决

spring - 我可以在Grails应用程序中的何处存储(保留)Java应用程序的xml文件

Jenkins 文件 : Define and assign values to several variables at once seems not to be implemented

java - elasticsearch - 没有为 [查询] 注册的查询]

c++ - 如何从 snprintf() 获得 -1

python - 基于输入参数模拟python函数

python - Python 中的单元测试是否有最小样式?

unit-testing - Grails - 如何单元测试 addTo*