2011-05-11 7 views
3

J'ai écrit une petite application en utilisant GAE et le playframework.PUT méthode dans playframework FunctionalTest

Je suis en train de tester la méthode PUT (utilisé pour les mises à jour) et lorsqu'il est appelé d'un FunctionalTest retourne toujours avec la page de connexion même si je me connecte au début de l'essai, qui peut être confirmé par tous l'autre méthode fonctionne bien.

On dirait que lorsque vous utilisez la méthode PUT la session est perdue

Tout le monde a eu des problèmes similaires?

J'utilise le jeu 1.1.1

+1

Salut, nous avons besoin d'un peu plus en détail: quel code que vous utilisez pour appeler la vente, votre entrée de routes, la mise en œuvre de la méthode, si les travaux mis en dehors des essais, etc. Autant d'informations que vous pouvez fournir s'il vous plaît :) –

+0

Testez-vous sur votre localhost ou sur le GAE déployé? Avez-vous une différence entre les deux? Je sais que GAE ne supporte pas beaucoup de fonctionnalités de base de jeu, et je me demande si c'est l'une de ces fonctionnalités – Codemwnci

+0

Salut Merci pour votre aide. – mericano1

Répondre

3

On dirait qu'il ya un bug dans FunctionalTest. Dans toutes les méthodes (POST, GET, SUPPRIMER) il y a la ligne suivante qui porte sur les biscuits

if (savedCookies != null) request.cookies = savedCookies; 

Cette ligne est manquante dans PUT. De plus, comme savedCookies est privé, vous ne pouvez pas y accéder lors de vos tests. Le travail consiste à définir la carte des cookies dans votre test en tant que variable privée, à la définir dans les cookies de réponse de connexion, puis à appeler POST avec une nouvelle requête en utilisant ces cookies.

Voici mon code

private static Map<String, Http.Cookie> lastCookies; 

public void login(){ 
    String postUrl = Router.reverse("GAEActions.doLogin").url; 
    Map<String, String> map = Maps.newHashMap(); 
    map.put("email", "[email protected]"); 
    map.put("url", "/"); 
    map.put("isAdmin", "true"); 
    Map<String, File> fileMap = Maps.newHashMap(); 
    Response post = POST(postUrl, map, fileMap); 
    lastCookies = post.cookies; 
} 
public void test(){ 
.... 
    Request request = newRequest(); 
    request.cookies = lastCookies; 
    Response post = PUT(request, url,"application/json",json); 
Questions connexes