4

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 に移動して、そのコンテンツを確認できるようにするにはどうすればよいですか?

4

1 に答える 1

8

リダイレクト先の 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")
于 2013-09-04T18:07:06.173 に答える