Я начал создавать новую игру Scala Play! приложение, и мне интересно, как проверить контроллер, который определяется следующим образом:
class CustomController @Inject()(
cc: SecuredControllerComponents,
clientResourceHandler: CustomResourceHandler
)(implicit ec: ExecutionContext)
extends SecuredController(cc)
Мне нужно издеваться над SecuredControllerComponents
, которые вводятся Guice автоматически.
case class SecuredControllerComponents @Inject()(
adminActionBuilder: AdminActionBuilder,
authenticatedActionBuilder: AuthenticatedActionBuilder,
actionBuilder: DefaultActionBuilder,
parsers: PlayBodyParsers,
messagesApi: MessagesApi,
langs: Langs,
fileMimeTypes: FileMimeTypes,
executionContext: scala.concurrent.ExecutionContext
) extends ControllerComponents
class SecuredController @Inject()(scc: SecuredControllerComponents)
extends AbstractController(scc) {
def AdminAction: AdminActionBuilder = scc.adminActionBuilder
def AuthenticatedAction: AuthenticatedActionBuilder = scc.authenticatedActionBuilder
}
В официальной документации Play предлагается использовать Helpers.stubControllerComponents()
для передачи компонентов в контроллер, который необходимо протестировать.
Редактировать - тест, который я хотел бы выполнить
"return a list of Custom Objects as a JSON array" in {
val controller =
new CustomController(Helpers.stubControllerComponents(), resourceHandler)
val result: Future[Result] = controller.index().apply(FakeRequest())
.....
val bodyText: String = contentAsString(result)
bodyText mustBe "ok"
Я прочитал это руководство о тестировании с Google Guice, но я не знаю, как справиться с моими пользовательскими SecuredComponents
и CustomResourceHandler
.
Не могли бы вы указать мне правильное направление? Есть ли хороший пример, чтобы посмотреть?
Моя текущая конфигурация
- Scala v2.12.8
- Play 2.7.2
- Scala Guice 4.2.1
- scalatestplus-play 4.0.2