【问题标题】:How to get message from i18n message properties using grails 2.x unit testing?如何使用 grails 2.x 单元测试从 i18n 消息属性中获取消息?
【发布时间】:2013-01-10 12:24:43
【问题描述】:

在 grails 2.x 中编写测试用例时,从 I18n 属性文件获取消息时遇到问题。

在我这样使用的控制器中:

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

当从控制器进入结果对象时,消息将返回:

upload.coverpage.file.isempty.msg

但原始消息是:

"Sorry, the file size is empty."

如何获取原始消息。 有人知道吗?

感谢和问候

阿纳根德拉

【问题讨论】:

  • 为什么选择 g.message?您可以在控制器中使用 message(code:"...")。
  • @Mr.Cat 从技术上讲,您不需要需要 g. 前缀,但我还是倾向于使用它 (a) 让任何阅读以下代码的人更清楚我打算将它作为一个 taglib 调用,并且 (b) 因为可能会发生名称冲突。 (b) 在 webflow 中特别痛苦,如果您在控制器中分配给 flash.message,那么在您的 GSP 中调用 message(...) 将停止工作(但 g.message(...) 仍然可以正常工作)。

标签: unit-testing grails internationalization message


【解决方案1】:

我认为这是测试消息的正确方法。我现在正在为在 grails 1.3.5 上编写的应用程序编写测试,但控制器单元测试出错:

No signature of method: ChallengeListingController.message()

我决定这样解决:

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

我准确地返回消息code:判断字符串是否正确就足够了,当然您也可以将代码与值分开。

【讨论】:

  • 嗨猫先生,谢谢。但是我需要在哪里使用此代码?在 Controller 或 ControllerTests 中?
  • 当然是在测试中。它动态地将消息方法添加到控制器。但这是针对 grails 1.3.5 的。在您的测试中使用 assertEquals('upload.coverpage.file.isempty.msg', mockFlash.message) 并且返回消息代码而不是值是相当正确的
猜你喜欢
  • 2016-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-11
  • 2014-01-14
相关资源
最近更新 更多