了解Grails测试中的metaClass

时间:2011-02-24 05:02:06

标签: unit-testing grails

我目前正在学习grails,并通过the guide进行测试。

提供了一个示例,其中包括在虚构的BookController中为这段代码编写测试:

def show = {
    [ book : Book.get( params.id ) ]
}

该指南建议采用以下方法来模拟params.id

的结果
void testA() {
    BookController.metaClass.getParams = {-> [id:10] }
}

由于这是对BookController的静态定义的更改,这是否会在测试之间持续存在,或者Grails魔法是否会以某种方式自动清除tearDown方法?

即,如果我要编写一个后续测试,跳过metaClass.getParams的设置并且在testA之后运行,那么params.id仍会返回10吗?

如果是这样,那么在测试拆除中清理标准的grails实践是什么?我正在阅读的指南中似乎没有涉及。

1 个答案:

答案 0 :(得分:0)

您正在使用涵盖1.0.x的古老版本的文档。测试支持现在更加稳固,因此请参阅http://grails.org/doc/latest/

中更新的第9章