2010-09-20 5 views
2

J'essaye de simuler une donnée HTTPServletRequest sur mon serveur GAE de développement. Je suis en cours d'exécution du plugin Eclipse 1.3.7Se moquer du serveur de développement GAE?

J'ai essayé de le faire:

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; 
    } 
    ... 
} 

exécutant la commande suivante donne exception:

java.lang.NoClassDefFoundError: sun.reflect.ReflectionFactory is a restricted class. Please see the Google App Engine developer's guide for more details.

Toutes les idées sur la façon de désactiver la classe tandis que la liste vérification sur le serveur de développement GAE ou peut-être en utilisant une autre bibliothèque de simulation qui fonctionne avec GAE?

Merci, Maxim.

Répondre

0

Je doute que vous serez en mesure de contourner cela sur le GAE. Le GAE est conforme à la norme Java Servlet, vous pouvez donc probablement tester votre programme en installant un conteneur de servlets Java standard tel que Tomcat.

De même, le fait que le mockage ne nécessite pas de réflexion, par définition de "moqueur"? La liste blanche de GAE est strictement appliquée, et vous ne pourrez pas la contourner. Pour déployer sur le moteur de l'application, il n'y a aucun moyen d'utiliser l'API de réflexion complète (certaines classes sont cependant supportées).

+0

J'ai fini par étendre HttpServletRequest et par substituer les méthodes que je voulais mocker. Fonctionne à la fois sur le développement et GAE. –