Проблемы с получением grailsApplication из интеграционного теста - PullRequest
4 голосов
/ 28 марта 2011

Я использую 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 ...

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 )
}

Вот ошибка.Как получить ссылку?- Dave

Невозможно получить свойство 'config' для нулевого объекта

java.lang.NullPointerException: Невозможно получить свойство 'config' для нулевого объекта в com.nna.tool.proxy.Utility.UtilityService.isAuthorizedHost (UtilityService.groovy: 26) в com.nna.tool.proxy.Utility.UtilityService $ isAuthorizedHost.call (Неизвестный источник) в com.nna.tool.proxy.Utility.UtilityServiceTests.testIsAuthorizedHost (UtilityServiceTes):

Ответы [ 4 ]

2 голосов
/ 28 марта 2011

Смотрите ответ здесь.Это может также работать в вашей ситуации.Вы можете просто поместить этот код в метод тестов setup () ...

Функциональное тестирование Grails - grailsApplication.config имеет значение null в контроллерах и службах

1 голос
/ 06 декабря 2013

Создание GrailsApp с использованием DefaultGrailsApplication будет работать.

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

1 голос
/ 17 сентября 2012

Вам необходимо запустить интеграционные тесты, так как тесты Grails не jUnit.

1 голос
/ 10 марта 2012

Я думаю, что свойство grailsApplication доступно только в контроллере и представлениях для службы

Вместо ApplicationHolder.application.config.proxy.allowedDomains.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...