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 に答える