在GAE开发服务器上嘲笑?
问题描述:
我试图嘲笑我的开发GAE服务器上的HTTPServletRequest数据。我运行Eclipse插件1.3.7在GAE开发服务器上嘲笑?
我试着这样做:
package com.FOO.madservice.servlet.mock;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import static org.mockito.Mockito.*;
@SuppressWarnings("serial")
public class BAR2ServletMock extends HttpServlet {
...
protected HttpServletRequest requestFilter(HttpServletRequest req) {
HttpServletRequest servletRequest = spy(req);
doReturn("gzip, deflate").when(servletRequest).getHeader("header-name-goes-here");
doReturn("174.30.216.4").when(servletRequest).getRemoteAddr();
return servletRequest;
}
...
}
运行以下给出了异常:
java.lang.NoClassDefFoundError: sun.reflect.ReflectionFactory is a restricted class. Please see the Google App Engine developer's guide for more details.
如何同时禁用清单类的任何想法检查GAE开发服务器还是使用与GAE一起使用的不同模拟库?
谢谢, Maxim。
答
我怀疑你能在GAE上解决这个问题。
GAE符合Java Servlet标准,因此您可以通过安装标准Java Servlet容器(如Tomcat)来测试您的程序。
另外,不反对嘲笑需要反思,定义为“嘲弄”? GAE白名单是绝对执行的,你将无法绕过它。要在应用引擎上进行部署,无法使用全反射API(但支持某些类)。
我最终扩展了HttpServletRequest并覆盖了我想要模拟的方法。适用于开发和GAE。 – 2011-03-05 13:52:49