模拟配置单元测试grails控制器

时间:2011-07-15 14:14:31

标签: unit-testing grails

在grails 1.3.7中,我通过控制器中的ConfigurationHolder访问一些外部属性。谷歌搜索建议我可以在我的单元测试设置中使用以下内容:

    mockConfig '''
        sys.admin.username = "username"
        sys.admin.password = "password"
    '''

当我的单元测试运行时,ConfigruationHolder.config为null。所以更多的谷歌搜索引导我在设置中尝试这个:

    def mockedConfig = new ConfigObject()
    mockedConfig.sys.admin.username = "username"
    mockedConfig.sys.admin.password = "password"
    ConfigurationHolder.config = mockedConfig

在单元测试中仍然获得null配置对象。我也尝试了第一种风格的hiearctical语法,它也不起作用:

    mockConfig('''
        sys { admin {
            username = 'username'
            password = 'password'
        } }
    ''')

我是grails的新手所以我在这方面遇到了困难,并希望对我的控制器单元进行测试。我如何绕过空配置对象?

2 个答案:

答案 0 :(得分:2)

唉,这是一个时间问题。我在我的控制器类中持有对配置程序的引用:

def config = ConfigurationHolder.config

将其移到需要它的方法中。

答案 1 :(得分:0)

你试过这个:

import org.codehaus.groovy.grails.commons.ConfigurationHolder as CH

....


def username = CH.config.sys.admin.username
def password = CH.config.sys.admin.password