У меня есть проект Play 2.3 с sub-project внутри. После этого tutorial я пишу тест для контроллера подпроекта с route
метода:Как сделать метод маршрута работает в подпроекте Play 2.x?
"Get Action" in new WithApplication {
val Some(result) = route(FakeRequest(GET, "/sub/bob/11"))
status(result) mustEqual OK
}
приобретаемого при routes.conf, подпроект маршрутов сконфигурировано так:
-> /sub sub.Routes
И в sub.Routes, он содержит:
GET /bob/:id controllers.sub.BobController.get(id: Int)
Однако метод route()
всегда возвращает None
. Использование route(FakeRequest(GET, "/bob/11"))
тоже не работает.
В настоящее время я могу только решить эту проблему путем прямого вызова к методу контроллера:
val result = BobController.get(11)(FakeRequest(GET, "/bob/11"))
В этом случае параметр «11» в «/ боб/11» стать бесполезным, так как он не используется.
Так кто знает, как сделать маршрут() работает для подпроекта?
Благодаря человеку, это работает. – null
Но зачем нужно 'Play.stop()'? – null
Добро пожаловать. Извините, в этом примере вы можете просто игнорировать его. Если вам нужно создать новую FakeApplication для каждого тестового примера (Get Action 1, Get Action 2, Get Action 3 и т. Д.), Вы можете использовать Play.stop() для очистки ресурсов. –