grails - 在Grails cucumber 测试中使用I18N消息

标签 grails groovy cucumber geb

我在grails项目中编写 cucumber 测试用例。我想访问message.properties文件中配置的消息

例如我在message.properties文件中将一个属性配置为:

view.user.page.title = View user

我有一个 cucumber 步骤ViewUserSteps.groovy
Given(~'^I looged in into the app$') { ->
  //code related to login
}
When(~'^I click view users tab"$') { ->
   // click user tab logic
}
Then(~'^I see I am on View User page$') { ->
   at ViewUserPage
}

而且ViewUserPage.groovy是
import geb.Page
import grails.util.Holders
class ViewUserPage extends Page{
    static url = "${Holders.config.app.url}/users/view"
    static at = {
       waitFor(30,2) { 
           title == "Edit user"  // this title should be fetched from message.properties file 
       }
    }
}

在ViewUserPage中,我应该能够获取message.properties中配置的标题。类似于g.message(code:'view.user.page.title')之类的东西,或者通过其他某种方式,因此,如果我更改了message.properties,则无需更改测试用例。有什么想法吗?

最佳答案

您可以询问messageSource bean文本是什么,然后将其与请求结果进行比较。

看起来像这样(responseData.errors.username是请求的结果(即When步骤):

Then(~'^an error message is shown that the user name is already used$') {->
    assert responseData.errors.username.contains (message ('user.username.unique'))
}
message是一个小的帮助函数,用于获取消息的文本:
String message (String code) {
    getBean ('messageSource').getMessage (code, null, null)
}

我们在message对象中添加了World,以便可以分步自动使用它。

关于grails - 在Grails cucumber 测试中使用I18N消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26930046/

相关文章:

eclipse - 在 eclipse-possible 插件错误上运行 grails 应用程序

json - Grails的getProperties方法并不总是以正确的顺序返回属性

java - testrunner 类文件中的glue 命令和@StepDefAnnotation 的用途是什么?

grails - def函数/Grails中的方法

postgresql - Groovy 无法连接到 postgresql 数据库?

internet-explorer - Watir Webdriver 文本在 IE 上输入缓慢

ruby-on-rails - cucumber + capybara : Problem with a scenario that redirects the browser outside of my app

javascript - 单击按钮时从 Grails 模板添加表格行

grails - 没有 joinTable 的单向 OneToMany 关系

grails - 使用本地平面文件存储库而不是远程 Maven 存储库