我们有一个 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 会自动使用您可以在测试中使用的 MockHttpServletRequest
、MockHttpServletResponse
和 MockHttpSession
配置每个集成测试。
在单元测试中,您需要导入并实例化一个新的 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/