0

У меня есть проект с ручной инъекцией зависимости. Могу ли я проверить свое приложение со стандартным набором тестов Play?Инспекция приложения Injection Injection Play 2.5.x

play.application.loader = "Apploader"

class AppLoader extends ApplicationLoader { 
    override def load(context: Context): Application = { 
    LoggerConfigurator(context.environment.classLoader).foreach(_.configure(context.environment)) 
    new AppComponents(context).application 
    } 
} 
} 

class AppComponents(context: Context) extends BuiltInComponentsFromContext(context) with EhCacheComponents with EvolutionsComponents with DBComponents with HikariCPComponents{ 

    lazy val applicationController = new controllers.Application(defaultCacheApi, dbApi.database("default")) 
    lazy val usersController = new controllers.Users(defaultCacheApi) 
    lazy val assets = new controllers.Assets(httpErrorHandler) 

    //applicationEvolutions 

    // Routes is a generated class 
    override def router: Router = new Routes(httpErrorHandler, applicationController, usersController, assets) 

Для теста теперь очень просто

class ApplicationTest extends PlaySpec with OneAppPerTest { 

"Application" must { 

"send 404 on a bad request" in { 
    route(FakeRequest(GET, "/boum")) mustBe None 
} 
} 
} 

Тест заканчивается с ошибкой:

Could not find a suitable constructor in controllers.Application. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument 

Я полагаю, мне нужно как-то использовать мой AppLoader вместо defualt Guis mechanisam внутри класса ApplicationTest, потому что Application controlle r имеет зависимость (cacheApi, dbApi ...)

Метод маршрута может принимать приложение как аргумент, но как я могу получить контекст для ручного создания класса AppLoader? Новичка в рекомендациях Scala приветствуется.

ответ