如何在Spock中模拟HttpServletRequest

Flo*_*iel 5 java groovy servlets mocking spock

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

以下代码抛出 java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/http/Cookie

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

    when:
    1+1

    then:
    true
}
Run Code Online (Sandbox Code Playgroud)

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

我们该怎么做?它与Mockito合作,但我们放松了Spock嘲弄的超棒.

编辑:我们知道Grails和Spring内置的Servlet函数的模拟功能,我们只想知道是否有办法用Spock模拟.否则你会混合使用模拟设置技术......

Art*_*ero 4

Grails 自动使用 、MockHttpServletRequestMockHttpServletResponse来配置每个集成测试MockHttpSession,您可以在测试中使用它们。

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

import org.springframework.mock.web.MockHttpServletRequest

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

    when:
    1+1

    then:
    true
}
Run Code Online (Sandbox Code Playgroud)