§機能テストを書く
Play は機能テストを支援するいくつかのクラスとメソッドを提供しています。それらのほとんどは play.api.test
パッケージか、Helpers
オブジェクトのいずれかの中から見つけることができます。
以下をインポートすることで、これらのメソッドとクラスを追加することができます:
import play.api.test._
import play.api.test.Helpers._
§FakeApplication
Play はしばしば、play.api.Play.current
が提供する Application
をコンテキストとして実行することを要求します:
テスト用の環境を提供するために、Play は 本番用とは異なる Global オブジェクトや追加設定、さらには追加プラグインにより設定することのできる FakeApplication
クラスを提供しています。
§WithApplication
サンプルコードにアプリケーションを渡すには、WithApplication
を使います。明示的に FakeApplication
を渡すこともできますが、利便性のためにデフォルトの FakeApplication
が提供されています。
WithApplication
は Around
ブロックに組み込まれているので、自身のデータで上書きすることができます。
§WithServer
ときどき、テストコードから実際の HTTP スタックをテストしたくなりますが、このような場合は WithServer
を使ってテストサーバを起動することができます。
port
の値には、サーバが起動しているポート番号が含まれています。デフォルトは 19001 番ですが、ポート番号を WithServer
のコンストラクタに渡すか、testserver.port
システムプロパティに設定することで変更することができます。これにより、ビルドごとにポート番号を動的に確保することができるので、CI サーバと統合するのに便利です。
カスタムルートを設定して WS 呼び出しをテストするのに便利な FakeApplication
をテストサーバに渡すこともできます:
§WithBrowser
ブラウザを使ってアプリケーションをテストしたい場合、Selenium WebDriver が使えます。Play は WebDriver を起動し、FluentLenium が提供する便利な API でラップします。
"run in a browser" in new WithBrowser {
browser.goTo("/")
browser.$("#title").getTexts().get(0) must equalTo("Hello Guest")
browser.$("a").click()
browser.url must equalTo("/")
browser.$("#title").getTexts().get(0) must equalTo("Hello Coco")
}
WithServer
同様、ポート番号、 FakeApplication
を変更することができますし、使用する web ブラウザを選択することもできます:
"run in a browser" in new WithBrowser(webDriver = FIREFOX) {
...
}
§PlaySpecification
PlaySpecification
は、Play のヘルパーメソッドと一緒に使うとクラッシュする、デフォルトの specs2 スペックが提供するいくつかのミックスインを除外します。また、利便性のため Play テストヘルパと型をミックスインします。
§テンプレートのテスト
テンプレートは標準的な Scala の関数なので、テストから実行して、結果を確認することができます:
Unable to find label scalatest-functionaltemplatespec in source file code/FunctionalTemplateSpec.scala§コントローラのテスト
FakeRequest
を提供することで、あらゆる Action
のコードを呼び出すことができます:
§ルータのテスト
自分で Action
を呼び出す代わりに、Router
にこれを行わせることができます:
§モデルのテスト
SQL データベースを使っている場合、inMemoryDatabase
を使ってデータベースコネクションを H2 データベースのインメモリインスタンスに置き換えることができます。
次ページ: より高度なトピック
このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。