2011-08-15 3 views
2

私はPlay!を使ってセレンテストを書いています。フレームワークといくつかのテストには共通のビットがあります。私はその共通のビットをPlayに引き出したいと思っています!タグ。プロダクションコードでは、タグはapp/views/tagsになります。しかし、タグはテストテンプレートだけにしか見えません。プレイを作成!セレンテストのみのフレームワークタグ

私はテスト/タグテスト/ビュー/タグの下で私のタグを入れてみましたが、両方の方法でエラーが発生しました:

The template tags/Login.html or tags/Login.tag does not exist. 

私はアプリ/ビューの下にタグをつけている場合/タグうまく動作します。しかし、明らかにこのタグはテスト目的のためのものです。

答えて

2

タグは、のアプリ/ビュー/タグ(そのサブフォルダの下)でなければなりません。それ以外の場合、Playはそれらを取得しません。 app/views/tags/testingこのパスを再現し、テスト専用のタグを付けて、開発者が使用しないようにします。あなたは(余分な安全のために)生産でそれらを無効にしたい場合は

#{testing.Demo /} 

this APIをご確認ください:

そのフォルダの使用中のタグのデモを使用します。あなたのタグに次のようなものを追加してください:

#{if play.mode.isDev()} 
    tag code 
#{/if} 
+0

私はif文を試しましたが、エラーが返されました:例外が発生しましたMissingMethodException:メソッドのシグネチャがありません:静的play.Play $ Mode.isDev()は引数型に適用されます。 #{if play.mode.name()== 'DEV'}に変更しました。私はそれがきれいだとしてあなたのソリューションが良いのですが、なぜそれがエラーを与えるすべてのアイデア? – digiarnie

+0

mmm playは、テンプレート内の "デフォルト"のオブジェクトです。私はちょうどisDev()が静的ではないことに気づいた(私の悪い!)のでおそらく#{play.mode.isDev()}のようなものでなければならない –

0

私の知る限り、タグはapp/views/tagsまたは任意のサブフォルダの下になければなりません。どのように私はあなたがモジュール内のタグを定義し、テストモードでのみこれをインポートできると確信しています。少し複雑ですが清潔です。