如何在Ruby中作为方法运行参数?
我需要知道如何将被调用的方法作为数组传入,然后在实例化的类中运行该代码 背景代码(例如简化): (在现实世界中,API和TestAssert都是数百行方法,使用并组合命令通过Watir与网页交互。) 我现在无法开始工作的地方:如何在Ruby中作为方法运行参数?,ruby,watir,Ruby,Watir,我需要知道如何将被调用的方法作为数组传入,然后在实例化的类中运行该代码 背景代码(例如简化): (在现实世界中,API和TestAssert都是数百行方法,使用并组合命令通过Watir与网页交互。) 我现在无法开始工作的地方: require_relative 'API' require_relative 'Asserts' require_relative 'LoggingIn' class Step def initialize(actionArray, checkArray=n
require_relative 'API'
require_relative 'Asserts'
require_relative 'LoggingIn'
class Step
def initialize(actionArray, checkArray=nil)
@interact = API.new
asserting = TestAssert.new
actionArray.each do |action|
@interact.action
end
checkArray.each do |check|
@asserting.check
end
end
end
@myActionArray = Array.new
@myActionArray << putsWords("Hello")
@myActionArray << putsWords("World")
@myAssertArray = Array.new
@myAssertArray << multiply(7, 3)
step1 = Step.new(@myActionArray, @myAssertArray)
需要相对的“API”
需要相对的“资产”
需要相对“登录”
类步
def初始化(actionArray,checkArray=nil)
@interact=API.new
断言=TestAssert.new
actionArray.each do | action|
@互动
结束
checkArray.each do | check|
@断言检查
结束
结束
结束
@myActionArray=Array.new
@myActionArray您要使用它向对象发送任意消息,并更改输入数组:
@myActionArray = Array.new
@myActionArray << ["oppAndQuote", "Acme", "QuoteTest", "", "", ""]
@myAssertArray = Array.new
@myAssertArray << ["assertOnPage", "QuoteTest", "didnt work"]
坦白地说,我认为lambda路径更好,但如果您的架构师希望这样做,您会这样做。您编写它的方式,就好像每个项都分别进入数组,但事实并非如此。数组中的一项是:oppAndQuote(“Acme”、“QuoteTest”、“”、“”、“”、“”、“”、“”),或者,在简化版本中是:putshows(“Hello”)。当我尝试这样做时,我会得到“main:Object的未定义方法”oppAndQuote“。send的签名是send(方法名称,*args)
,因此如果您有一个[methodname,arg1,arg2,…,argn]的数组
,您可以将其放入send
,以使用这些参数调用该方法。请确保它是字符串或符号,并且您没有尝试调用实际的方法。
@myActionArray = Array.new
@myActionArray << ["oppAndQuote", "Acme", "QuoteTest", "", "", ""]
@myAssertArray = Array.new
@myAssertArray << ["assertOnPage", "QuoteTest", "didnt work"]
@interact.send(*action)
...
@asserting.send(*check)