[英]Trouble getting grailsApplication reference from integration test
I'm using Grails 1.2.1 and trying to write an integration test for one of my service classes. 我正在使用Grails 1.2.1并尝试为我的一个服务类编写集成测试。 The service method i want to test is ...
我想测试的服务方法是......
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
...
but when writing my integration test, I'm unable to get a non-null reference to the grailsApplication object ... 但是在编写集成测试时,我无法获得对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 )
}
Here is the error. 这是错误。 How do I get the reference?
我如何获得参考? - Dave
- 戴夫
Cannot get property 'config' on null object 无法在null对象上获取属性'config'
java.lang.NullPointerException: Cannot get property 'config' on null object at com.nna.tool.proxy.Utility.UtilityService.isAuthorizedHost(UtilityService.groovy:26) at com.nna.tool.proxy.Utility.UtilityService$isAuthorizedHost.call(Unknown Source) at com.nna.tool.proxy.Utility.UtilityServiceTests.testIsAuthorizedHost(UtilityServiceTests.groovy:20) 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)
See the answer here. 在这里看到答案。 It might also work in your situation.
它也可能适用于您的情况。 You can just put that code in the tests setup() method...
你可以把这些代码放在tests setup()方法中......
Grails Functional Testing - grailsApplication.config is null within controllers and services Grails功能测试 - grailsApplication.config在控制器和服务中为空
您需要运行集成测试,因为grails测试不是jUnit。
Constructing grailsApp using DefaultGrailsApplication
would work. 使用
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 )
}
}
grails-core / grails-core / src / main / groovy / org / codehaus / groovy / grails / commons / DefaultGrailsApplication.java grails-core / grails-core / src / main / groovy / org / codehaus / groovy / grails / commons / DefaultGrailsApplication.java
I think the grailsApplication property is only available in the controller and views, for a service 我认为grailsApplication属性仅在控件和视图中可用于服务
Try ApplicationHolder.application.config.proxy.allowedDomains
instead. 请尝试使用
ApplicationHolder.application.config.proxy.allowedDomains
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.