Documentation

You are viewing the documentation for the 2.1.x release series. The latest stable release series is 2.4.x.

§機能テストを書く

§テンプレートのテスト

テンプレートは Scala の標準的な関数であるため、テスト内で呼び出してその結果をチェックすればよいでしょう。

"render index template" in {
  val html = views.html.index("Coco")
  
  contentType(html) must equalTo("text/html")
  contentAsString(html) must contain("Hello Coco")
}

§コントローラのテスト

テストしたい ActionFakeRequest を渡すことで、コードを実行することができます。

"respond to the index Action" in {
  val result = controllers.Application.index("Bob")(FakeRequest())
  
  status(result) must equalTo(OK)
  contentType(result) must beSome("text/html")
  charset(result) must beSome("utf-8")
  contentAsString(result) must contain("Hello Bob")
}

§ルータのテスト

Action を直接的に呼び出す代わりに、 Router に呼び出させることもできます。

"respond to the index Action" in {
  val Some(result) = route(FakeRequest(GET, "/Bob"))
  
  status(result) must equalTo(OK)
  contentType(result) must beSome("text/html")
  charset(result) must beSome("utf-8")
  contentAsString(result) must contain("Hello Bob")
}

§テスト内で HTTP サーバを起動する

場合によっては、 HTTP スタック全体を通したテストを書きたいことがあると思います。その場合、テストサーバを起動するとよいでしょう。

"run in a server" in new WithServer {
  await(WS.url("http://localhost:" + port).get).status must equalTo(OK)
}

port の値はサーバが起動するポート番号で、デフォルトは 19001 です。変更するためには WithServer の引数でポート番号を指定するか、システムプロパティ testserver.port を設定してください。この設定は、 CI サーバからテストを実行するためにビルド毎に動的にポート番号を変更したいような場合にも有用です。

"run in a server" in new WithServer(port = 3333, app = FakeApplication(additionalConfiguration = inMemoryDatabase)) {
  await(WS.url("http://localhost:3333").get).status must equalTo(OK)
}

§Web ブラウザを通してテストする

ブラウザを経由してアプリケーションのテストを行いたい場合、 Selenium WebDriver を使うとよいでしょう。 WebDriver は Play によって起動されて、 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 、利用するブラウザなどを変更できます。

"run in a browser" in new WithBrowser(browser = FIREFOX) {
  ...
}

次ページ: より高度なトピック


このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。