Тестирование приложения Play2 с SecureSocial с использованием внедрения зависимостей

Большое спасибо за любые рекомендации!

Плагин SecureSocial прекрасно работает, когда я запускаю его из браузера, но я бы хотел сейчас протестировать остальную часть моего приложения Play.

Краткое введение

SecureSocial»Синтаксис выглядит так:

def page = SecuredAction(WithProvider("google")) { ... }

или это: я

def page = UserAwareAction { ... }

искалВот, который, кажется, единственный вопрос о переполнении стека, даже удаленно связанный с моей проблемой с SecureSocial, но я неНе очень интересная переустановка байт-кода. Там должно быть более простое решение для этого.

Когда я'Когда я запускаю тесты, которые обращаются к действиям, защищенным SecureSocial, я получаю большую ошибку, которая, по-моему, означаетЯ не передаю его пользователю. (см. нижнюю часть этого вопроса)

Что я хотел бы сделать

Либо внедрить все функции, чтобы вернуть типAction вместоSecuredAction или жеUserAwareAction только во время тестирования

Или фактически передать тестового пользователя на вызов.Но как?

Что у меня есть
@Singleton
class JsonOps @Inject() () extends Controller with SecureSocial {...}

Global.scala написано как описаноВот и в моем тесте ...

val controller = new JsonOps
val result = controller.userAwareActionRequestForSomeJson("")(FakeRequest())

У меня также есть такие звонки:

// This is what I would use for production
def extjs = SecuredAction(WithProvider("google")) { implicit request =>
   Ok(views.html.extjs(request.user.firstName))
}
// This is what I would use for testing
def extjs = Action { implicit request =>
  Ok(views.html.extjs("testtesttesting"))
}

Вот почему я думаю, что эта проблема может быть хорошо подходит для внедрения зависимости? Я'Я не уверен, как бы я сделал экземпляр класса, так как Global.scala I 'm using - это универсальный экземпляр класса. Я неОсобо хотелось бы написать 9000+ признаков для каждого контроллера, который у меня есть.

Большая ошибка

Это строка UserOpsSpec.scala, строки 12 и 13:

12  val controller = new UserOps
13  val result = controller.extjs()(FakeRequest())

и это ошибка

[error]     RuntimeException: java.lang.ExceptionInInitializerError (UserOpsSpec.scala:13)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:220)
[error] securesocial.core.SecureSocial$.authenticatorFromRequest(SecureSocial.scala:200)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:81)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:78)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:215)
[error] play.api.Play$anonfun$current$1.apply(Play.scala:51)
[error] play.api.Play$anonfun$current$1.apply(Play.scala:51)
[error] play.api.Play$.current(Play.scala:51)
[error] securesocial.core.Authenticator$.cookieName$lzycompute(Authenticator.scala:188)
[error] securesocial.core.Authenticator$.cookieName(Authenticator.scala:188)
[error] securesocial.core.Authenticator$.(Authenticator.scala:201)
[error] securesocial.core.Authenticator$.(Authenticator.scala)
[error] securesocial.core.SecureSocial$.authenticatorFromRequest(SecureSocial.scala:200)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:81)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:78)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:215)
[error] null
[error] securesocial.core.SecureSocial$.authenticatorFromRequest(SecureSocial.scala:200)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:81)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:78)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:215)
[error] There is no started application
[error] play.api.Play$anonfun$current$1.apply(Play.scala:51)
[error] play.api.Play$anonfun$current$1.apply(Play.scala:51)
[error] play.api.Play$.current(Play.scala:51)
[error] securesocial.core.Authenticator$.cookieName$lzycompute(Authenticator.scala:188)
[error] securesocial.core.Authenticator$.cookieName(Authenticator.scala:188)
[error] securesocial.core.Authenticator$.(Authenticator.scala:201)
[error] securesocial.core.Authenticator$.(Authenticator.scala)
[error] securesocial.core.SecureSocial$.authenticatorFromRequest(SecureSocial.scala:200)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:81)
[error] securesocial.core.SecureSocial$anonfun$SecuredAction$1.apply(SecureSocial.scala:78)
[error] play.api.mvc.ActionBuilder$anon$1.apply(Action.scala:215)
[info]

Ответы на вопрос(1)

Ваш ответ на вопрос