[英]Trouble getting grailsApplication reference from integration test
我正在使用Grails 1.2.1並嘗試為我的一個服務類編寫集成測試。 我想測試的服務方法是......
class UtilityService {
boolean transactional = false
def grailsApplication
def isAuthorizedHost(String hostIpAddr) {
// Simple validation
if (hostIpAddr == null || hostIpAddr.length() == 0)
return false;
//
def allowedDomains = grailsApplication.config.proxy.allowedDomains
...
但是在編寫集成測試時,我無法獲得對grailsApplication對象的非null引用...
class UtilityServiceTests extends GrailsUnitTestCase {
def grailsApplication
void testIsAuthorizedHost() {
def utilityService = new UtilityService()
utilityService.grailsApplication = grailsApplication
def ret = utilityService.isAuthorizedHost("127.0.0.1")
assertTrue( ret )
}
這是錯誤。 我如何獲得參考? - 戴夫
無法在null對象上獲取屬性'config'
java.lang.NullPointerException:無法在com.nna.tool.proxy.Utility.UtilityService.isAuthorizedHost(UtilityService.groovy:26)的com.nna.tool.proxy.Utility.UtilityService $ isAuthorizedHost上的null對象上獲取屬性'config' .call(未知來源)com.nna.tool.proxy.Utility.UtilityServiceTests.testIsAuthorizedHost(UtilityServiceTests.groovy:20)
在這里看到答案。 它也可能適用於您的情況。 你可以把這些代碼放在tests setup()方法中......
您需要運行集成測試,因為grails測試不是jUnit。
使用DefaultGrailsApplication
構建grailsApp會起作用。
import org.codehaus.groovy.grails.commons.DefaultGrailsApplication
class UtilityServiceTests extends GrailsUnitTestCase {
def grailsApplication = new DefaultGrailsApplication()
void testIsAuthorizedHost() {
def utilityService = new UtilityService()
utilityService.grailsApplication = grailsApplication
def ret = utilityService.isAuthorizedHost("127.0.0.1")
assertTrue( ret )
}
}
我認為grailsApplication屬性僅在控件和視圖中可用於服務
請嘗試使用ApplicationHolder.application.config.proxy.allowedDomains
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.