我想知道是否有可能,因为这些全局变量存在并被其他函数访问,以告诉函数使用一个或另一个变量而不重写大量代码。我必须使用全局变量,因为我对calabash传递变量的限制(如果我错了,请纠正我)。我希望能够调用一个可以获取信息并将其填充到几个全局变量之一的函数。希望有这样的东西:
def add_five(my_var)
if my_var == "my_cats"
use $my_cats for my_var_nickname
elsif my_var == "my_dogs"
use $my_dogs for my_var_nickname
elsif my_var == "my_birds"
use $my_birds for my_var_nickname
end
my_var_nickname = my_var_nickname + 5
end
$my_cats = 2
$my_dogs = 3
$my_birds = 3
add_five("my_cats")
$my_cats = 7
$my_dogs = 3
$my_birds = 3
感谢您的帮助!
答案 0 :(得分:1)
我认为使用全局变量有一种难闻的气味......
无论如何,您可以尝试使用hash:
$animal_counts = {}
def add_five(animal_type)
$animal_counts[animal_type] += 5
end
$animal_counts[:cats] = 2
$animal_counts[:dogs] = 3
$animal_counts[:birds] = 3
add_five(:cats)
$animal_counts[:cats] # => 7
$animal_counts[:dogs] # => 3
$animal_counts[:birds] # => 3
希望有所帮助!
答案 1 :(得分:0)
def record_as(stuff)
variable_to_use = if stuff == "foo"
$variableA
elsif stuff == "bar"
$variableB
end
#do stuff with variable_to_use
end
答案 2 :(得分:0)
简单使用 在你的ruby步骤文件中定义一个像这样的变量
$global_memory=""
在你的葫芦步骤中,可以在另一个ruby步骤文件中。 从查询中读取一些文本,并在运行时将其存储在该变量上。
Then I should memorize delivery time
在ruby步骤文件中定义如下
Then /^I should memorize delivery time$/ do
srctext=query("label marked:'lblOrderTime'",:text).first
srctext=srctext.to_s
$global_memory.replace(srctext)
end
稍后在场景中,您可以回想起该值,并像这样使用它
Then I should see order dispatch time same as in checkout screen and receipt screen
在ruby步骤文件中定义如下
Then /^I should see order dispatch time same as in checkout screen and receipt screen$/ do |arg|
datetext=$global_memory
result = query("webView css:'SPAN' index:5").first["textContent"].include? "#{datetext}"
unless result
textFound = query("webView css:'TABLE' index:0").first["textContent"]
screenshot_and_raise "time #{datetext} not found instead #{textFound} is found"
end
end
此外,您可以使用哈希(键值对)同时存储多个变量并检索它们。