コントローラのパブリック静的メソッドが同じコントローラの別のパブリック静的メソッドを明示的に(Java呼び出しで)呼び出すと、Play!コードを実行するか、機能テストでリダイレクトするかを知りません。
私が持っている場合:
public class ApplicationTest extends FunctionalTest {
@Test
public void testProvesThatFunctionalTestsDoesntCallControllerMethods() {
Response response = GET("/");
assertEquals("", getContent(response));
}
@Test
public void testProvesThatCallingItDirectlyWorksAsExpected() throws Exception {
Response response = GET("/another");
assertEquals("ok!", getContent(response));
}
}
と:
public class Application extends Controller {
public static void index() {
another();
}
public static void another() {
renderText("ok!");
}
}
しかし、 playrunまたはplaystartを実行してWebブラウザで「/」を呼び出すと「ok!」が返されます。FunctionalTestは本番環境で実行するのとまったく同じように機能するのではないでしょうか。それは私に機能テストを避けさせたり、実行前のWebサーバーの膨大な手動セットアップと依存関係を持たせたりしますが、それはクールではありません。
前もって感謝します。