在grails黄瓜测试中使用I18N消息

时间:2014-11-14 12:28:59

标签: grails groovy cucumber geb

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

e.g。我在message.properties文件中配置了一个属性:

view.user.page.title = View user

我有一个黄瓜步骤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(代码:' view.user.page.title')或其他方式,以便如果我在message.properties中更改,则无需更改测试用例。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以向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对象,以便它自动按步骤提供。