Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中作为方法运行参数?_Ruby_Watir - Fatal编程技术网

如何在Ruby中作为方法运行参数?

如何在Ruby中作为方法运行参数?,ruby,watir,Ruby,Watir,我需要知道如何将被调用的方法作为数组传入,然后在实例化的类中运行该代码 背景代码(例如简化): (在现实世界中,API和TestAssert都是数百行方法,使用并组合命令通过Watir与网页交互。) 我现在无法开始工作的地方: require_relative 'API' require_relative 'Asserts' require_relative 'LoggingIn' class Step def initialize(actionArray, checkArray=n

我需要知道如何将被调用的方法作为数组传入,然后在实例化的类中运行该代码

背景代码(例如简化):

(在现实世界中,API和TestAssert都是数百行方法,使用并组合命令通过Watir与网页交互。)

我现在无法开始工作的地方:

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)