13

我想访问不同 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
4

1 回答 1

19

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

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

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

注意:通常建议不要在步骤/场景之间共享变量,因为它会产生耦合。

于 2013-09-23T14:57:34.400 回答