Play 2.4: How do I disable routes file loading during unit tests?

前端 未结 2 1052
旧巷少年郎
旧巷少年郎 2021-02-04 08:41

Background: I am using Play 2.4 (Java) with InjectedRoutesGenerator and a Guice module to configure various dependencies. But during unit tests, the FakeApplica

2条回答
  •  清酒与你
    2021-02-04 09:07

    I am answering my own question here. After spending some more time with Play source code, I figured out the connection between the routes file and the generated Router class. Hope it helps someone else.

    Play's route compiler task compiles all files in conf folder ending with .routes as well as the default routes file. Generated class name is always Routes, but the package name depends on the file name. If the file name is routes (the default routes file), compiled class is placed in router package, so the fully qualified class name is router.Routes (which is the default value for play.http.router).

    For all other route files, RouteCompiler derives the package name by dropping the .routes from the file name. So for my.test.routes, play.http.router value should be my.test.Routes.

    Here is the base class for my tests, with custom router and db configuration elements.

    public class MyTestBase extends WithApplication {
        @Override
        protected Application provideApplication() {
            Application application = new GuiceApplicationBuilder()
                    .configure("db.default.driver", "org.h2.Driver")
                    .configure("db.default.url", "jdbc:h2:mem:play")
                    .configure("play.http.router", "my.test.Routes")
                    .build();
            return application;
        }
    }
    

提交回复
热议问题