Как получить сообщение из свойств сообщения i18n с помощью модульного тестирования Grails 2.x?

У меня возникает проблема с получением сообщения из файла свойств I18n при написании тестовых случаев в grails 2.x.

в контроллере я использую вот так:

g.message(code:'upload.coverpage.file.isempty.msg')

при попадании в объект результата из контроллера сообщение будет возвращено как:

upload.coverpage.file.isempty.msg

но исходное сообщение:

"Sorry, the file size is empty."

Как получить исходное сообщение. у любого тела есть идея?

С уважением

арнагендла


person arnagendla    schedule 10.01.2013    source источник
comment
Почему g.message? Вы можете использовать сообщение (код:...) в контроллере.   -  person Mr. Cat    schedule 10.01.2013
comment
@Mr.Cat Технически вам не нужен префикс g., но я все равно склонен его использовать (а), чтобы всем, кто читает код, было понятно, что я предполагал, что это вызов taglib, и ( б) из-за возможного конфликта имен. (b) особенно болезненно в веб-потоке, где, если вы назначите flash.message в своем контроллере, вызовы message(...) в ваших GSP перестанут работать (но g.message(...) все еще работает нормально).   -  person Ian Roberts    schedule 11.02.2013


Ответы (1)


Я думаю, что это правильный способ проверки сообщений. Сейчас я пишу тесты для приложения, которое было написано на Grails 1.3.5 и получило ошибку для модульного теста контроллера:

No signature of method: ChallengeListingController.message()

Я решил решить это следующим образом:

ChallengeListingController.metaClass.message={def msg-> return msg.code}

Я возвращаю именно сообщение code: достаточно принять решение, что строка верна и, конечно же, вы отделяете код от значений.

person Mr. Cat    schedule 10.01.2013
comment
привет, мистер Кэт, спасибо. Но где мне нужно использовать этот код? в контроллере или ControllerTests? - person arnagendla; 11.01.2013
comment
В тесте конечно. он динамически добавляет метод сообщения в контроллер. Но это для Grails 1.3.5. В вашем тесте используйте assertEquals('upload.coverpage.file.isempty.msg', mockFlash.message), и правильнее возвращать код сообщения, чем значение - person Mr. Cat; 11.01.2013