2014-09-02 24 views
0

如果我叫兩次黃瓜如何/當參數具有相同的object_id?

#test.feature 

When test abc cba 
and test abc cba 

#test_steps.rb 

When(/^Test (.+)$/ do |arg| 
    puts arg 
    arg.remove! 'cba' 
end 

它首先會返回(puts

#=> abc cba

,並在第二次調用

#=> abc

...有趣剛剛意識到。爲了確保我在每次通話中都檢查了arg.object_id,並且... 相同

還檢查了差異情景和結果之間的相同呼叫根本沒有變化。

我的問題是:黃瓜如何在不同的When/Then調用之間保存相同的字符串?

+0

這不是導軌或導軌4的問題。你應該刪除這些標籤。 – 2014-09-02 17:17:58

回答

0

黃瓜的步驟是全球定義的,它會重用步驟。當你打電話去除!在參數上,你正在改變你的第二次調用發生在改變的參數上的全局步驟。

放入一個鉤子和一個撬,你可以insepct的東西的狀態。

Before do |scenario| 
    binding.pry 
end 

[3] pry(#<Object>)> scenario.steps 
=> Cucumber::Ast::StepInvocation, 40034540, Cucumber::Ast::StepInvocation, 40034500