我正在尝试将参数从.feature文件(黄瓜)传递到.rb文件中的方法调用 继承人我所拥有的: 专题文件
When I set something to blah
上述特征文件的步骤定义:
When /^I set something to (.+)$/ do |value|
methodcall(["#{value}"]))
end
单独的.rb文件中的方法
def methodcall (a=[],b=[],c=[])
a.each {|x|
do something with x
}
b.each {|y|
do something with y
}
c.each {|z|
do something with z
}
...
end
当我在.feature文件中只提供一个参数时,它工作正常。我希望它能为每个数组的一个值工作(虽然没试过)
但我想要做的就是写一下这样的特色文件
And I set something to "blah,blah1,blah2" and somethingelse to "blah4,blah5" and otherthings to "blah6, blah7"
对于上述,步骤定义看起来像
When /^I set something to (.+) and somethingelse to (.+) and
and otherthings to (.+)$/ do |value, value1, value2|
methodcall(["#{value}"], ["#{value1}"], ["#{value2}"]))
end
并通过上面的步骤定义,将value,value1,value2中的值传递给对应于a = [],b = [],c = []的参数,并调用methodcall()方法。有人可以帮忙..谢谢。
答案 0 :(得分:3)
在您的代码中
methodcall(["#{value}"])
您正在获取字符串值并将其转换为数组的第一个元素,然后将其传递给methodcall()。
我相信你真正想做的是
methodcall(value.split(','))
这将取你的价值,用逗号分解并将每一个作为数组的元素。
为了说明你的例子,假设methodcall()是:
def methodcall (a=[],b=[],c=[])
a.each {|x| puts x }
b.each {|y| puts y }
c.each {|z| puts z }
end
然后
value = "blah,blah1,blah2"
methodcall(["#{value}"])
#=> blah,blah1,blah2
在哪里
value = "blah,blah1,blah2"
methodcall(value.split(,))
#=> blah
#=> blah1
#=> blah2