Documentation

You are viewing the documentation for the 2.0.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")
}

§コントローラのテスト

FakeRequest を渡せば、どんな Action コードでも実行することができます。

"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) = routeAndCall(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 {
  running(TestServer(3333)) {
  
    await(WS.url("http://localhost:3333").get).status must equalTo(OK)
  
  }
}

§Web ブラウザからテストする

ブラウザを通してアプリケーションをテストしたい場合、 Selenium WebDriver を使うことができます。Play は WebDriver を起動した上で、 FluentLenium が提供する便利な API にラップします。

"run in a browser" in {
  running(TestServer(3333), HTMLUNIT) { browser =>
    
    browser.goTo("http://localhost:3333")
    browser.$("#title").getTexts().get(0) must equalTo("Hello Guest")
    
    browser.$("a").click()
    
    browser.url must equalTo("http://localhost:3333/Coco")
    browser.$("#title").getTexts().get(0) must equalTo("Hello Coco")

  }
}

次ページ: 上級者向けのトピック


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