Grails:在测试中可用的运行时添加方法?
Posted
技术标签:
【中文标题】Grails:在测试中可用的运行时添加方法?【英文标题】:Grails: Added methods during runtime available in tests? 【发布时间】:2011-12-05 20:52:19 【问题描述】:我正在尝试测试一个控制器,该控制器特别是使用 java.io.File 和 Grails 在运行时注入的一些方法/属性,例如:
空的 文件项 转移到()
我收到以下错误:
No such property: empty for class: java.io.File
有些方法很容易实现:
def testFile = new File('test/unit/resources/TestScript.groovy')
File.metaClass.getFileItem = -> testFile
File.metaClass.isEmpty = -> false
但其他人没有,所以我想知道是否有办法让 Grails 为我添加它们?我的理解是这是在集成测试中完成的,但是将测试移到那里会给我同样的错误。
任何帮助表示赞赏。
谢谢
乔纳斯
【问题讨论】:
这没有意义。File
上的那些方法来自 Groovy,并且是 Groovy JDK 运行时的一部分。只要您正在运行 Groovy 代码,它们就应该存在。你试过运行grails clean
吗?
你在哪里找到这个 File.empty 属性?我在 GDK javadocs 中没有看到它。
没错,我也无法在 javadocs 中找到它。我们的动作看起来很像下面使用它的站点上的清单 6:link 有趣的是,我没有收到以下行的错误:File.metaClass.isEmpty = -> false
那么,我将如何对清单 6 中的动作进行单元测试上面的链接?
【参考方案1】:
没错,我也无法在 javadocs 中找到它。我们的操作看起来很像下面使用它的网站上的清单 6:
http://www.ibm.com/developerworks/java/library/j-grails06099/index.html
有趣的是,我没有收到以下行的错误:
File.metaClass.isEmpty = -> false
【讨论】:
【参考方案2】:您的测试类是继承自GroovyTestCase
还是继承自ControllerUnitTestCase
?
对于集成测试,它应该是GroovyTestCase
。
【讨论】:
非常感谢。那可能是问题所在。我想过,但因为ControllerUnitTestCase
实际上是GroovyTestCase
的子类,所以我没有尝试...
糟糕。太早兴奋了……还是不行:-(以上是关于Grails:在测试中可用的运行时添加方法?的主要内容,如果未能解决你的问题,请参考以下文章