保留黄瓜中的变量?

时间:2013-09-23 14:53:17

标签: ruby-on-rails rspec cucumber

我想访问差异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

1 个答案:

答案 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

注意:通常建议不要在步骤/方案之间共享变量,因为它会创建耦合。