Сохранять переменную в огурце?

Я хочу получить доступ к переменным в разнице. Приведенные /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

Чтобы обмениваться переменными между определениями шагов, вам нужно использовать переменные экземпляра или глобальные.

Переменные экземпляра могут использоваться, когда вам нужно обмениваться данными между определениями шагов, но только для одного теста (т.е. переменные очищаются после каждого сценария). Переменные экземпляра начинаются с @.

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

Примечание. Обычно рекомендуется не делиться переменными между шагами/сценариями, поскольку создает связь.