Доступ к servletContext из службы в рамках интеграционного теста - PullRequest
3 голосов
/ 25 августа 2011

Я пытаюсь получить доступ к servletContext (контекст приложения) из службы в интеграционном тесте.

Вот как я пытаюсь включить его в свой интеграционный тест:

import org.codehaus.groovy.grails.web.context.ServletContextHolder as SCH 

class ScraperServiceIntegrationTests extends GroovyTestCase {
   ScraperService scraperService

    def testStoring() {
        scraperService = new ScraperService()
        scraperService.servletContext = new SCH() 
        scraperService.storing()
        ...
    }
    ...
}

Вот как я использую контекст сервлета в моем сервисе:

class ScraperService {

    static transactional = true
    def servletContext 

    synchronized def storing() {
        servletContext.numberOfCreditProvider = "whatever"
        ...
    }
    ...
}

Iполучить следующее сообщение об ошибке:

No such property: numberOfCreditProvider for class: org.codehaus.groovy.grails.web.context.ServletContextHolder

Как я могу решить эту ошибку?

Ответы [ 2 ]

5 голосов
/ 25 августа 2011

Вы присваиваете servletContext в своем тесте ServletContextHolder вместо самого фактического контекста.

Возможно, вы захотите это в своем тесте:

import org.codehaus.groovy.grails.web.context.ServletContextHolder as SCH

def testStoring() {
    scraperService = new ScraperService()
    scraperService.servletContext = SCH.servletContext
    scraperService.storing()
    ...
}
4 голосов
/ 25 августа 2011
org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext()
...