2011-05-11 4 views
3

GAE 및 playframework를 사용하여 작은 응용 프로그램을 작성했습니다. 나는 PUT의 (업데이트에 사용) 방법을 테스트하기 위해 노력하고playframework에서 PUT 메서드 FunctionalTest

모든 하여 확인할 수 있습니다 항상 내가 테스트의 시작 부분에 로그인도 불구 로그인 페이지로 반환하는 FunctionalTest에서 를 호출 할 때 다른 방법은 잘 작동합니다.

세션이

누구나 비슷한 문제가 있었다 손실 PUT 메소드를 사용하는 경우처럼 보이는?

나는 놀이를 사용하고 있습니다. 1.1.1

+1

안녕하세요, 우리는 좀 더 상세하게 필요합니다 당신이, 풋를 호출하여 경로 항목을 사용하고있는 코드, 방법의 구현, 테스트 이외의 작품을 넣어 경우, 등등. 많은 정보를 제공해주십시오 :) –

+0

로컬 호스트 또는 배포 된 GAE에서 테스트 중이십니까? 둘 사이에 어떤 차이가 있습니까? GAE가 Play 핵심 기능을 많이 지원하지 않는다는 것을 알고 있으며, 이것이 해당 기능 중 하나인지 궁금합니다. – Codemwnci

+0

안녕하세요. 도움을 주셔서 감사합니다. – mericano1

답변

3

FunctionalTest에 버그가있는 것 같습니다. 모든 메소드 (POST는 GET, DELETE)이 줄은 PUT에서 누락 된 쿠키

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

을 통해 수행 다음 줄이에서 . 또한 savedCookies는 비공개이므로 테스트에서 액세스 할 수 없습니다.

해결 방법은 테스트에서 쿠키 맵을 개인 변수로 정의하고 로그인 응답 쿠키로 설정 한 다음이 쿠키를 사용하여 새 요청으로 POST를 호출하는 것입니다.

여기 내 코드

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);