2010-09-20 86 views
2

我试图嘲笑我的开发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。

回答

0

我怀疑你能在GAE上解决这个问题。

GAE符合Java Servlet标准,因此您可以通过安装标准Java Servlet容器(如Tomcat)来测试您的程序。

另外,不反对嘲笑需要反思,定义为“嘲弄”? GAE白名单是绝对执行的,你将无法绕过它。要在应用引擎上进行部署,无法使用全反射API(但支持某些类)。

+0

我最终扩展了HttpServletRequest并覆盖了我想要模拟的方法。适用于开发和GAE。 – 2011-03-05 13:52:49