Play!2.0 フレームワーク (Scala) には、リダイレクトに使用できる API があります。ただし、Play Framework ( Scala ) で、テスト ケースが自動的にリダイレクト応答に従う方法はありますか。毎回リダイレクト ロジックを繰り返したくありません。
Play Framework (Scala) のテストケース内でリダイレクトをたどるには?
Play!2.0 フレームワーク (Scala) には、リダイレクトに使用できる API があります。ただし、Play Framework ( Scala ) で、テスト ケースが自動的にリダイレクト応答に従う方法はありますか。毎回リダイレクト ロジックを繰り返したくありません。
Play Framework (Scala) のテストケース内でリダイレクトをたどるには?
編集:完全に明確にするために。これを行うための組み込みの方法はありませんが、それには正当な理由があります。単体テストは単純で分離されている必要があります。単一の単体テストは、単一の機能をテストするためのものです。
例:GET
認証が必要なページにリクエストを送信しましたが、資格情報を提供しなかったため、サーバーは とSEE OTHER
フラッシュ メッセージを添付して応答します。次に、その要求に適切に応答したことを確認します。テストオーバー。で応答するコントローラー関数は、そのフラッシュデータで何かを行う可能性SEE OTHER
があることを除いて、他のことを知らないはずです。
例 2 :GET
フラッシュ データが添付されたログイン ページにリクエストを送信します。OK
サーバーは、その中にフラッシュ メッセージを表示する HTML ビューで応答します。そうすることを確認します。
これら 2 つを結び付けたい場合は、おそらくWithBrowserを使用したテストの方が適しています。
リダイレクト情報をテストしている場合は、リダイレクトが指しているコントローラー関数/ビューから分離することをお勧めします。これを実現するために使用できるテスト ヘルパーがあります。
テストしたいとしましょう
Redirect("/login").flashing("message" -> "You are not logged in.")
テストでは、次のヘルパーを使用できます。
import play.api.test._
val request = FakeRequest(GET, "/secretpage")
val Some(result) = route(request)
status(result) must equalTo(SEE_OTHER)
redirectLocation(result) must beSome("/login")
flash(result).get("message") must beSome("You are not logged in.")
これは Play 2.1.x 以降用であることに注意してください。2.0.x を使用している場合は、に変更route
する必要がありますrouteAndCall
。