grails - 从集成测试中的服务访问 servletContext

标签 grails service integration-testing servlets

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

关于grails - 从集成测试中的服务访问 servletContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7191782/

相关文章:

grails - 服务 chalice 的多种方法

grails - grails3.1.x 最好的 gitignore 应该是什么?

android - 重力传感器监听器不工作

java - Gate 作为 Web 服务嵌入

spring-boot - @DirtiesContext 不适用于@Nested 测试

parsing - 上传 CSV 文件并将数据解析到 Grails 中的数组?

java - 在生产或测试中运行时,Grails 不使用我的数据源?

ssl - 有没有办法强制 svcutil.exe 忽略 SSL 证书问题?

testing - 哪些测试工具和方法支持 12 因素应用程序

java - 在 Java 中接收 android 推送通知以进行测试