在Java中模拟HTTPRequest和HTTPResponse对象
如何模拟在Java中模拟HTTPRequest和HTTPResponse对象,java,servlets,Java,Servlets,如何模拟HTTPServletRequest和HTTPServletResponse对象。原因是我想测试一些servlet的行为 我知道JUnit可能提供了这个功能,但我不知道如何使用它(我很快就会学习),需要合理地快速完成 HTTPServletRequest和HTTPServletResponse都是接口,因此无法实例化它们。有一个HttpServletRequestWrapper实现了HttpServletRequest,但它似乎没有任何setParameter()类型方法,HttpSer
HTTPServletRequest
和HTTPServletResponse
对象。原因是我想测试一些servlet的行为
我知道JUnit可能提供了这个功能,但我不知道如何使用它(我很快就会学习),需要合理地快速完成
HTTPServletRequest和HTTPServletResponse都是接口,因此无法实例化它们。有一个HttpServletRequestWrapper
实现了HttpServletRequest,但它似乎没有任何setParameter()
类型方法,HttpServletResponse似乎根本没有任何实现类
我如何通过传递一个合适的
HttpServletRequest
对象,然后检查收到的HttpServletResponse
对象是否与我期望的匹配来测试我的代码呢?它是一个接口,这使得模拟更容易:模拟最终的类非常棘手
class MyHttpServletRequest implements HttpServletRequest
{
//whatever
}
class MyHttpServletResponse implements HttpServletResponse
{
//whatever
}
doGet(new MyHttpServletRequest(),
new MyHttpServletResponse())
子类化HttpServletRequestWrapper可能更容易,但不是必需的。我会看一下重写和它是一个接口这一事实使得模拟更容易:模拟最终类是很棘手的
class MyHttpServletRequest implements HttpServletRequest
{
//whatever
}
class MyHttpServletResponse implements HttpServletResponse
{
//whatever
}
doGet(new MyHttpServletRequest(),
new MyHttpServletResponse())
子类化HttpServletRequestWrapper可能更容易,但不是必需的。我将研究覆盖并创建一个虚拟对象:
class MyDummyRequest implements HTTPServletRequest{
//implement your own methods, for example:
public Map getParameterMap(){
Map myMap = new HashMap();
//put the params you need inside myMap
return myMap;
}
}
如果您希望避免为测试目的创建虚拟对象,您可以查看一个可用的Java库,例如Mockito。创建虚拟对象:
class MyDummyRequest implements HTTPServletRequest{
//implement your own methods, for example:
public Map getParameterMap(){
Map myMap = new HashMap();
//put the params you need inside myMap
return myMap;
}
}
如果您想避免为测试目的创建虚拟对象,您可以查看一个可用的Java库,例如Mockito。Ok,谢谢。。。这也让我更好地理解了接口的意义。好的,谢谢。。。这也让我更好地理解了接口的意义。