在Grails中使用metaClass模拟一个动作

时间:2011-07-25 14:14:02

标签: grails service mocking action

我正在尝试模拟控制器的操作概述,但它无效。

我试过这种方式:

MyController.metaClass.overview = { ->
        println "MOCKED OVERVIEW"
        render(view:"overview", model)
    }

MyController.metaClass.demand.overview = { ->
        println "MOCKED OVERVIEW"
        render(view:"overview", model)
    }

MyController.metaClass.static.overview = { ->
        println "MOCKED OVERVIEW"
        render(view:"overview", model)
    }

这一切都行不通。

但我使用.metaClass来模拟一些服务,并且它起作用了。

为什么这个动作不起作用?

从未显示过println的声明。

1 个答案:

答案 0 :(得分:1)

在Grails的引导过程中需要执行操作 - 以生成URL和所有Spring bean。初始化应用程序后,您无法覆盖它(这很容易)。

无论如何,你不需要 - 行动应该简单。任何可测试的逻辑都应该是可测试的。