如何将局部变量转换为attr_accessor

时间:2013-09-17 11:21:15

标签: ruby cucumber bdd

我有一个黄瓜特征文件(login.feature):

When I login with invalid credentials

相应的步骤定义(在login_steps.rb中)为:

When(/^I login with 'invalid' credentials$/) do
  @page.login(USERS[:invalid]) 
end
env文件夹下的

user.rb包含:

USERS = {
    :valid => {
        :username => "peterpan",
        :password => "xyz"
    },
    :invalid => {
        :username => "invalidusername",
        :password => "testtest"
    }
}

以上工作完全没问题。

现在我需要更多像有效,validwithusernameonly,validwithpasswordonly等。例如,步骤:

When I login with 'invalid' credentials

When I login with 'valid' credentials

When I login with 'validwithusernameonly' credentials

假设这些凭据位于user.rb

我需要在下面的步骤定义中将user_credential_identifier传递给USERS,如下所述。

When(/^I login with '(.+)' credentials$/) do |user_credential_identifier|
  @page.login(USERS[:invalid])
end

1 个答案:

答案 0 :(得分:0)

您已从步骤中捕获了一个字符串 - 例如“有效”。由于您的USERS哈希使用符号作为键,因此您需要将字符串转换为符号。这可以使用.to_sym方法完成:

user_credential_identifier.to_sym

将此概念应用于您的步骤,它将成为:

When(/^I login with '(.+)' credentials$/) do |user_credential_identifier|
  @page.login(USERS[user_credential_identifier.to_sym])
end
相关问题