假设我有一个使用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()
?
答案 0 :(得分:1)
您可以在集成测试中测试i18消息:
在测试规范中注入bean messageSource
并调用getMessage(String code, Object[] args, Locale locale)
下面
代码:查询,例如'calculator.noRateSet'和
args :在您的情况下,消息中的params将填充的参数数组,可以设置为null
和
区域设置:要在其中执行查找的区域设置 e.g
messageSource.getMessage('calculator.noRateSet', null, controller.request.getLocale())