Grails:在测试期间可用的运行时添加了方法?

时间:2011-10-12 06:23:55

标签: unit-testing grails metaclass

我正在尝试测试一个控制器,特别是在运行时使用java.io.File和Grails注入的一些方法/属性,例如:

空 的FileItem 的transferTo()

我收到以下错误:

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为我添加它们?我的理解是这是在集成测试中完成的,但在那里移动测试会给我同样的错误。

任何帮助表示感谢。

由于

纳斯

2 个答案:

答案 0 :(得分:0)

您的测试类是继承自GroovyTestCase还是来自ControllerUnitTestCase? 对于集成测试,它应该是GroovyTestCase

答案 1 :(得分:0)

是的,我也无法在javadoc中找到它。我们的操作看起来非常类似于以下网站上的清单6:

http://www.ibm.com/developerworks/java/library/j-grails06099/index.html

有趣的是,我没有得到以下行的错误:

File.metaClass.isEmpty = { -> false }