-1

基づく:リダイレクト後にロードされるページのテスト

Play!2.0 フレームワーク (Scala) には、リダイレクトに使用できる API があります。ただし、Play Framework ( Scala ) で、テスト ケースが自動的にリダイレクト応答に従う方法はありますか。毎回リダイレクト ロジックを繰り返したくありません。

Play Framework (Scala) のテストケース内でリダイレクトをたどるには?

4

1 に答える 1

1

編集:完全に明確にするために。これを行うための組み込みの方法はありませんが、それには正当な理由があります。単体テストは単純で分離されている必要があります。単一の単体テストは、単一の機能をテストするためのものです。

: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

于 2014-06-16T17:32:05.953 に答える