Unit testing 模拟用于单元测试grails控制器的配置

Unit testing 模拟用于单元测试grails控制器的配置,unit-testing,grails,Unit Testing,Grails,在Grails1.3.7中,我通过控制器中的ConfigurationHolder访问一些外部属性。谷歌搜索表明,我可以在设置单元测试时使用以下内容: mockConfig ''' sys.admin.username = "username" sys.admin.password = "password" ''' 当我的单元测试运行时,ConfigruationHolder.config为null。因此,更多的谷歌搜索让我在设置中尝试:

在Grails1.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
仍在单元测试中获取空配置对象。我还尝试了第一种样式的层次语法,但也不起作用:

    mockConfig('''
        sys { admin {
            username = 'username'
            password = 'password'
        } }
    ''')
我是grails的新手,所以我正在艰难地完成这项工作,并希望对我的控制器单元进行测试。如何绕过空配置对象?

您是否尝试过以下方法:

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

....


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

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

def config = ConfigurationHolder.config

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

我遇到了同样的问题。谢谢你远程帮助我。你很了解这个问题吗?我没有。如果你能解释的话