невозможно прочитать сообщения из файла сообщений в модульном тесте - PullRequest
0 голосов
/ 11 июня 2018

Я хочу прочитать сообщения об ошибках из файла messages, но не могу.Какую ошибку я делаю?

Код, из которого я хочу прочитать строку из файла messages:

Future {  Ok(Json.toJson(JsonResultError(messagesApi("error.incorrectBodyType")(langs.availables(0))))) }

Файл messages error.incorrectBodyType=Incorrect body type. Body type must be JSON

MessagesApi («error.incorrectBodyType») должен возвращать Incorrect body type. Body type must be JSON, но возвращает error.incorrectBodyType.

Если я удаляю двойные кавычки в messagesApi(error.incorrectBodyType), тогда код не компилируется

Обновление

Я добавил пару отладочных отпечатков и заметил, что ключи, которые я использую в MessagesApi, не определены.Я не знаю почему, хотя, поскольку я создал их в messages файле.

println("langs array"+langs.availables)
        println("app.title"+messagesApi.isDefinedAt("app.title")(langs.availables(0)))
        println("error"+messagesApi.isDefinedAt("error.incorrectBodyType")(langs.availables(0)))

печатает

langs arrayList(Lang(en_GB))
app.titlefalse
errorfalse

Обновление 2 Возможно, я нашел проблему, но не знаюзнаю, как решить это.По сути, я запускаю свой тестовый пример без экземпляра Applicationmocking messagesApi, позвонив по номеру stubMessagesApi(), определенному в Helpers.stubControllerComponents. Если я запускаю тот же код, используя Application, например, class UserControllerFunctionalSpec extends PlaySpec with OneAppPerSuiteWithComponents, то определяются app.title и error.Кажется, без экземпляра Application, MessagesApi не использует файл messages.

1 Ответ

0 голосов
/ 12 июня 2018

Мне удалось решить эту проблему, создав новый экземпляр MessagesApi, используя DefaultMessagesApi

val messagesApi = new DefaultMessagesApi( //takes map of maps. the first is the language file, the 2nd is the map between message title and description
    Map("en" -> //the language file
      Map("error.incorrectBodyType" -> "Incorrect body type. Body type must be JSON") //map between message title and description
    )
  )
  val controller = new UserController(mockUserRepository,mockControllerComponents,mockSilhouette,messagesApi,stubLangs())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...