我的网络应用程序使用Geb进行功能测试。
这是一个非英语应用程序,所有页面消息都是从i18n消息包中接收的。
如何让Geb使用国际化消息?
答案 0 :(得分:3)
Grails RemoteControl plugin允许远程访问正在运行的Grails应用程序。在功能测试设置中,它可用于读取和更改配置设置,访问应用程序上下文,包括消息源,....
以下代码添加到我们所有Geb规范/测试的公共基类中,这些规范/测试可用于单个测试以检索国际化消息:
class BaseTest/Spec {
RemoteControl remoteControl = new RemoteControl()
String msg(String msgKey, args = null, locale = defaultLocale) {
if (args != null) {
args = args as Object[]
}
return remoteControl.exec {
ctx.messageSource.getMessage(msgKey, args, locale)
}
}
}
答案 1 :(得分:0)
我的所有页面类都从基类扩展:ScaffoldPage
import java.util.ResourceBundle;
import geb.Page
class ScaffoldPage extends Page {
static content = {
resourceBundle {
ResourceBundle bundle = new PropertyResourceBundle(new InputStreamReader(new FileInputStream('./grails-app/i18n/messages_ru.properties'), "UTF-8"))
bundle
}
}
}
然后,在某个页面,我使用这样的结构:
class CreatePayeePage extends ScaffoldPage {
static at = {
title == resourceBundle.getString('payee.title.create.label')
}
}