保留黄瓜中的变量?

One*_*ero 13 rspec ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

Jus*_* Ko 19

要跨步骤定义共享变量,您需要使用实例或全局变量.

当您需要跨步骤定义共享数据时,可以使用实例变量,但仅适用于一个测试(即在每个方案之后清除变量).实例变量以@开头.

Given(#something) do
  @foo = 123
end

Then(#something) do
  p @foo
  #=> 123
end
Run Code Online (Sandbox Code Playgroud)

如果要在所有方案中共享变量,可以使用以$开头的全局变量.

Given(#something) do
  $foo = 123
end

Then(#something) do
  p $foo
  #=> 123
end
Run Code Online (Sandbox Code Playgroud)

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