Ruby 带#to#ivar的猴子修补线
我想用#to#ivar来修补字符串 因此,当我有一个具有如下实例变量的环境时:Ruby 带#to#ivar的猴子修补线,ruby,cucumber,monkeypatching,Ruby,Cucumber,Monkeypatching,我想用#to#ivar来修补字符串 因此,当我有一个具有如下实例变量的环境时: instance variables: @__cucumber_runtime @browser @browser_type @debug @sauce_config @user_A 我可以在步骤定义中执行此操作: Given(/^user (.*) does something$/) do |user| @user = user.to_ivar ... end 所以我做了,但是
instance variables:
@__cucumber_runtime @browser @browser_type @debug @sauce_config @user_A
我可以在步骤定义中执行此操作:
Given(/^user (.*) does something$/) do |user|
@user = user.to_ivar
...
end
所以我做了,但是,字符串#to#ivar似乎不知道实例变量:
13: def to_ivar
=> 14: binding.pry
15: instance_variable_get("@#{self}")
16: end
[2] pry("user_A")> instance_variables
=> []
有没有办法让String实例了解Cucumber世界及其实例变量?这里的内容与实际情况背道而驰。Ruby的实例变量是特定于上下文的。字符串上的实例方法不起作用。在正确的上下文中,您需要一个helper方法,在本例中是case定义。您可能希望将相应的to
传递给_ivar
。
13: def to_ivar
=> 14: binding.pry
15: instance_variable_get("@#{self}")
16: end
[2] pry("user_A")> instance_variables
=> []