2011-07-15 90 views
2

在grails 1.3.7中,我通過控制器中的ConfigurationHolder訪問一些外部屬性。周圍的Googling建議我可以用下面的在我的單元測試的設置:單元測試grails控制器的模擬配置

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

當我的單元測試運行ConfigruationHolder.config爲空。所以更多的谷歌搜索導致我嘗試在設置中嘗試:

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

仍在單元測試中獲得空配置對象。我也試過這個第一的風格hiearctical語法和它沒有工作,要麼:

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

我是新來的Grails,所以我跌跌撞撞通過這次我的方式,並希望得到我的控制器單元測試。我如何解決空配置對象?

回答

2

唉,這是一個時間問題。我在控制器類中提到了配置持有者:

def config = ConfigurationHolder.config 

將它移到需要它的方法中。

+0

我遇到了同樣的問題。感謝您遠程幫助我。 你是否理解這個問題?我沒有。如果你能解釋 –

0

你有沒有嘗試過這樣的:

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

.... 


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