1

我的网络应用程序利用 Geb 进行功能测试。

它是一个非英语应用程序,所有页面消息都是从 i18n 消息包接收的。

如何让 Geb 处理国际化消息?

4

2 回答 2

3

Grails RemoteControl 插件允许远程访问正在运行的 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)
        }
    }
}
于 2012-10-22T14:27:46.830 回答
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')
    }
}
于 2012-10-22T10:10:57.150 回答