1

私はPlayを開発しています!サードパーティの Web サイトに組み込まれるいくつかの html/js ウィジェットを生成する 2 アプリケーション。それらのリンクは動的であるため、静的なテスト ファイルを持つことはできません。

テスト モードでのみ機能するテスト ビュー (およびそれらのビューへのルート) を取得するにはどうすればよいですか。これにより、Selenium でテストできます。

基本的に、testView1.scala.html、testView1.scala.html を test/views に追加して、そこへのルートを設定したいのですが、これらを本番モードで動作させたくありません。それに対する良いアプローチは何ですか?

4

2 に答える 2

3

これが最善の方法かどうかはわかりませんが、これが私が行う方法です。

  1. テスト ルートとテスト コントローラーへのルートを作成する
  2. テスト コントローラーで、ラップされたアクションを作成し、すべてのルートでこのアクションを使用します。
  3. このラップされたアクションは、プレイがどのモードにあるかをテストします。プレイがテスト モードでない場合は 404 に転送し、それ以外の場合はアクションを実行します

家に帰ったら、サポートするコードをいくつか追加しますが、これは私が使用する一般的なワークフローです。

それが役に立てば幸い。

于 2012-09-01T17:24:16.740 に答える
3

シンプル...(今では何年も答えなければなりません..)。@mbseidが答えたものに少し似ています:

/conf/routesの名前を/conf/prod.routes に変更し、 /conf/application.conf指定します。

play.http.router = prod.Routes

/conf/test.routesなどのテスト ルート ファイルを作成します。これは、テストのみのルートを公開し、残りを prod ルートに委譲します。

 /test/only/something    controllers.testonly.TestOnlySomethingController.someMethod()  
 -> /                    prod.Routes

テスト専用コントローラーが他のコントローラーとは異なるパッケージにあることを確認してください。

テストアプリケーションを起動すると、 play.http.routerをオーバーライドします。例:

 sbt run -Dplay.http.router=test.Routes

これは、他の方法では公開されないデータを公開するための統合テストを備えたマイクロサービス環境で役立つパターンです。

play.http.routerは、 v2.5+ より前はapplication.routerと呼ばれていたことに注意してください。

于 2017-07-22T00:52:59.180 に答える