2010-09-20 87 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