我想访问差异Given / Then / When子句中的变量。如何保存变量以便它们可以在任何地方访问?
Given(#something) do
foo = 123 # I want to preserve foo
end
Then(#something) do
# how to access foo at this point???
end
答案 0 :(得分:17)
要跨步骤定义共享变量,您需要使用实例或全局变量。
当您需要跨步骤定义共享数据时,可以使用实例变量,但仅适用于一个测试(即在每个方案之后清除变量)。实例变量以@。
开头Given(#something) do
@foo = 123
end
Then(#something) do
p @foo
#=> 123
end
如果要在所有方案中共享变量,可以使用以$开头的全局变量。
Given(#something) do
$foo = 123
end
Then(#something) do
p $foo
#=> 123
end
注意:通常建议不要在步骤/方案之间共享变量,因为它会创建耦合。