Как передать объект конфигурации контроллеру в модульном тесте - PullRequest
2 голосов
/ 17 июня 2019

У меня есть контроллер следующим образом:

class MyController @Inject()
(
  cc : ControllerComponents,
) extends AbstractController(cc) with I18Support(

  def controllerMethod() = Action{
   ... //some impl.
  }
)

Я тестирую свой контроллер в моем Scalatest следующим образом:

"My Controller" when {

  "a user hits this controller method" should {

  val controller = new MyController( cc = stubMessageControllerComponents )

  "be a 200 OK" in {
    whenReady(controller.mycontrollerMethod().apply(FakeRequest("GET", "/"))) {
    // some test

   }

Моя проблема в том, что теперь я изменил класс контроллерачтобы внедрить объект конфигурации следующим образом

class MyController @Inject()
(
  config : Configuration,
  cc : ControllerComponents,
) extends AbstractController(cc) with I18Support(

  def controllerMethod() = Action{
   ... //some impl.
  }
)

Теперь я получаю ошибку компиляции в моем тесте, потому что я не передаю объект конфигурации.Как я могу это сделать?

"My Controller" when {

  "a user hits this controller method" should {

  val controller = new MyController(
    // <- how can I pass a configuration object here 
    cc = stubMessageControllerComponents 
  )

  "be a 200 OK" in {
    whenReady(controller.mycontrollerMethod().apply(FakeRequest("GET", "/"))) {
    // some test

   }

1 Ответ

1 голос
/ 18 июня 2019

Попробуйте

new MyController(
  config = Configuration(ConfigFactory.load()) 
  cc = stubMessageControllerComponents 
)
...