我正在尝试从服务访问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()
        ...
    }
    ...
}

这是我在服务中使用servlet上下文的方式:
class ScraperService {

    static transactional = true
    def servletContext

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

我收到以下错误消息:
No such property: numberOfCreditProvider for class: org.codehaus.groovy.grails.web.context.ServletContextHolder

我该如何解决这个错误?

最佳答案

您正在将测试中的servletContext分配给ServletContextHolder而不是实际上下文本身。

您可能需要在测试中这样做:

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

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

08-16 19:26