我在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/