保留黄瓜中的变量?

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

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

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

 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 

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