【发布时间】:2012-02-11 16:11:03
【问题描述】:
我可以在 Groovy 中为 java Integer 类型添加一个方法:
ExpandoMetaClass.EnableGlobally()
Integer.metaClass.gimmeAP = {->return 'p'}
我不知道我为什么需要它,但它明白了这一点。现在我可以调用 Integers 并返回一个“p”。现在假设我想在 grails 应用程序中使用它,这样我就可以在域对象中进行调用。我遇到的具体问题是,当我将这些元编程行放在引导程序中时,所有元编程在单元测试中都不可用,所以我的单元测试失败并出现诸如“No method gimmeAP for java.lang.Integer”之类的错误或类似的东西。
我如何更好地包含元编程,或者执行引导程序的那部分,以便我可以在单元测试中使用我被欺骗的语法?
我看到了这个问题:Grails - Making Methods Globally Available and Metaclass Programming,我的ExpandoMetaClass.EnableGlobally() 似乎可以解决他的问题,但我用对了吗?
【问题讨论】:
标签: unit-testing grails metaprogramming