字符串外部的拼音插值



我正在使用不同的用户凭据运行一些测试。每个都会产生相同的错误消息,但我只需要确认它有效。

我创建了以下内容:

def login_mrjones
  fill_in('forname', with: 'Steve')
  fill_in('surname', with: 'Jones')
  etc etc
end

我为戴维斯先生和其他一些名字做了另一个。 在编写步骤定义时,我希望使用以下方法,变量名称为场景中的 mrjones 或 mrdavies:

When(/^I log in as "([^"]*)"$/) do |name|
   login_#{name}
end

我希望使用插值来完成该方法以使其成为通用,这一行将调用我拥有的任何login_name方法。

如果没有字符串,插值似乎不起作用。 有什么方法可以做到这一点吗?

你可以

eval("login_#{name}")

正如Stefan和Jörg W Mittag指出的那样,你应该更喜欢public_send Klass.public_send("login_#{name}.to_s")

或者更好。为什么不添加另一个帮助程序方法?

def login(name)
  case name
  when 'foo'
    login_foo
  ....
  end
end

最新更新