You are viewing the documentation for the 2.1.5 release in the 2.1.x series of releases. The latest stable release series is 2.4.x.
§機能テストを書く
§テンプレートのテスト
テンプレートは単なる Scala の関数なので、テストから呼び出して結果をチェックすることができます。
@Test
public void renderTemplate() {
Content html = views.html.index.render("Coco");
assertThat(contentType(html)).isEqualTo("text/html");
assertThat(contentAsString(html)).contains("Coco");
}
ヘルパークラス API ドキュメント で テストヘルパー の完全な一覧を参照することができます。
§コントローラのテスト
controllers.routes.ref.Application.index
というようにリバースルーターからアクションへの参照を受け取って、呼び出すこともできます。
@Test
public void callIndex() {
Result result = callAction(
controllers.routes.ref.Application.index("Kiki")
);
assertThat(status(result)).isEqualTo(OK);
assertThat(contentType(result)).isEqualTo("text/html");
assertThat(charset(result)).isEqualTo("utf-8");
assertThat(contentAsString(result)).contains("Hello Kiki");
}
§ルータのテスト
Action
を自分で呼び出す代わりに、 Router
に任せることもできます。
@Test
public void badRoute() {
Result result = routeAndCall(fakeRequest(GET, "/xx/Kiki"));
assertThat(result).isNull();
}
§実際に HTTP サーバを起動する
実際の HTTP スタックを通したテストを記述したい場合もあります。その場合は、次のようにテストサーバを起動することができます。
@Test
public void testInServer() {
running(testServer(3333), new Runnable() {
public void run() {
assertThat(
WS.url("http://localhost:3333").get().get().getStatus()
).isEqualTo(OK);
}
});
}
§Web ブラウザからテストする
Web ブラウザを通してアプリケーションをテストしたい場合、Selenium WebDriver を使うことができます。Play は WebDriver を初期化した上で、 FluentLenium が提供する便利な API にラップします。
@Test
public void runInBrowser() {
running(testServer(3333), HTMLUNIT, new Callback<TestBrowser>() {
public void invoke(TestBrowser browser) {
browser.goTo("http://localhost:3333");
assertThat(browser.$("#title").getTexts().get(0)).isEqualTo("Hello Guest");
browser.$("a").click();
assertThat(browser.url()).isEqualTo("http://localhost:3333/Coco");
assertThat(browser.$("#title", 0).getText()).isEqualTo("Hello Coco");
}
});
}