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

ステップ定義間で変数を共有するには、インスタンス変数またはグローバル変数を使用する必要があります。

インスタンス変数は、ステップ定義全体でデータを共有する必要がある場合に使用できますが、1 つのテストに対してのみ使用できます (つまり、各シナリオの後に変数がクリアされます)。インスタンス変数は @ で始まります。

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 に答える