我正在使用不同的用户凭据运行一些测试。每个都会产生相同的错误消息,但我只需要确认它有效。
我创建了以下内容:
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