2013-09-23 100 views
10

我想訪問變量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 

回答

15

要跨一步定義共享變量,你需要使用實例或全局變量。

如果您需要跨步驟定義共享數據,但僅限一次測試(即在每個方案後清除變量),則可以使用實例變量。實例變量以@開頭。

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 

注意:通常建議在創建耦合時不要在步驟/場景之間共享變量。

+0

我建議在可能的情況下使用默認值'@foo || =:bar',以便在沒有其他步驟的情況下使用該步驟。 – Johannes