java - 如何在 Spock 中模拟 HttpServletRequest

标签 java servlets groovy mocking spock

我们有一个 ServletFilter,我们想用 Spock 进行单元测试并检查对 HttpServletRequest 的调用。

下面的代码抛出 java.lang.ClassFormatError: 类文件 javax/servlet/http/Cookie 中非 native 或抽象的方法中缺少代码属性

def "some meaningless test"(){
    given:
    HttpServletRequest  servletRequest = Mock(HttpServletRequest)

    when:
    1+1

    then:
    true
}

JavaEE 5 API(以及 Servlet API)位于类路径中。 Spock 版本是 0.6-groovy-1.8。

我们如何正确地做到这一点?它适用于 Mockito,但我们会失去 Spock 的模拟功能。

编辑:我们知道 Grails 和 Spring 内置的 Servlet 模拟功能,我们只是想知道是否有一种方法可以使用 Spock 模拟来实现。否则你会混合使用模拟设置技术......

最佳答案

Grails 会自动使用您可以在测试中使用的 MockHttpServletRequestMockHttpServletResponseMockHttpSession 配置每个集成测试。

在单元测试中,您需要导入并实例化一个新的 MockHttpServletRequest .

import org.springframework.mock.web.MockHttpServletRequest

def "some meaningless test"(){
    given:
    def servletRequest = new MockHttpServletRequest()

    when:
    1+1

    then:
    true
}

关于java - 如何在 Spock 中模拟 HttpServletRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10751728/

相关文章:

java - 设置整个盒子的可见性

java - 一些 JMenus 没有出现

java - 用 C 或 Java 捕获操纵杆输入

servlets - 如何在一个Web应用程序上下文中访问另一个Web应用程序上下文

java - 如何重用 HttpUrlConnection?

Java第二次实例化final对象

groovy - Gradle中的 “group”属性有什么用?

grails - 数据驱动的Spock测试

java - 如何使用 Gradle 构建工具压缩受密码保护的文件夹