【问题标题】:i18n in Grails Integration TestGrails 集成测试中的 i18n
【发布时间】:2014-11-28 13:53:39
【问题描述】:

假设我有一个控制器方法使用 i18n 来设置flash.message

def someMethod(){
  // ...
  flash.message = message(code: 'label.generic.delete.ok.message', default: 'Delete OK')
  // ...
}

当我想编写一个集成测试来测试这个控制器时,我似乎找不到如何测试那个消息的值。

我的问题是我不想通过执行类似这样的操作对测试中的消息进行硬编码

assert controller.flash.message == "Delete successfull"

我宁愿做这样的事情

assert controller.flash.message == message(code: 'label.generic.delete.ok.message')

这会引发groovy.lang.missingMethodException

我查看了other answers here,但给出了单元测试的唯一解决方案。

我正在使用grails 2.2.4

有谁知道如何在集成测试中访问message()

【问题讨论】:

    标签: grails internationalization integration-testing


    【解决方案1】:

    您可以在集成测试中测试 i18 消息:

    在测试规范中注入 bean messageSource 并调用 getMessage(String code, Object[] args, Locale locale)

    这里

    code:用于查找,例如'calculator.noRateSet'和

    args:将在您的情况下为消息中的参数填充的参数数组,可以设置为null

    区域设置:进行查找的区域设置 例如

    messageSource.getMessage('calculator.noRateSet', null, controller.request.getLocale())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多