私のウェブアプリは機能テストにGebを利用しています。
これは英語以外のアプリケーションであり、すべてのページメッセージはi18nメッセージバンドルから受信されます。
Gebを国際化されたメッセージで機能させる方法は?
私のウェブアプリは機能テストにGebを利用しています。
これは英語以外のアプリケーションであり、すべてのページメッセージはi18nメッセージバンドルから受信されます。
Gebを国際化されたメッセージで機能させる方法は?
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)
}
}
}
すべてのページ クラスは基本クラスから拡張されます: 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')
}
}