2013-08-16 6 views
3

리디렉션 후로드 된 페이지 테스트 POST 호출 후 사용자가 올바른 페이지로 리디렉션되는지 확인해야하는 테스트 사례가 있습니다.

"Redirect Page" in { 
    running(FakeApplication()) { 
    val Some(result) = route(FakeRequest(POST, "/product/add/something") 
     .withFormUrlEncodedBody(
     "Id" -> "666", 
    ) 
     .withSession("email" -> "User") 
    ) 
    status(result) must equalTo(SEE_OTHER) 
    // contentAsString(result) at this point is just blank 

이렇게하면 리디렉션 URL이 제공되는지 확인합니다. 그런 다음 어떻게 단위 테스트를 리디렉션 된 URL로 이동하여 해당 내용을 확인할 수 있습니까?

+0

왜 정확하게 다른 테스트를 만들고 새 페이지를 테스트하지를 {...}의 "테스트 리디렉션 된 페이지" –

+0

새 페이지를 테스트하고 있지만 리디렉션이 올바른 새로운 페이지를 가리키고 있다는 것을 확신하지 못합니다. 페이지. 지금까지 확인한 바는 리디렉션 할 곳이 아닌 리디렉션하는 것입니다. – Ren

답변

6

당신과 함께 리디렉션 URL을 테스트 할 수 있습니다

redirectLocation(result) must beSome.which(_ == "/product/666") 

당신은 내용을 확인 리디렉션 따르십시오 :

val nextUrl = redirectLocation(result) match { 
     case Some(s: String) => s 
     case _ => "" 
    } 
    nextUrl must contain("/product/666") 

    val newResult = route(FakeRequest(GET, nextUrl)).get 

    status(newResult) must equalTo(OK) 
    contentType(newResult) must beSome.which(_ == "text/html") 
    contentAsString(newResult) must contain("something") 
+0

리디렉션을 만드는 방법에 감사드립니다. 그러나 Play Framework (Scala)에는 테스트 케이스가 자동으로 리디렉션되는 방식이 있습니다. 매번 리디렉션 논리를 반복하고 싶지 않습니다. – tuxdna

+0

tuxdna : 새 질문 게시 – ashawley