如果我打电话两次就知道了
#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 :(得分:0)
黄瓜步骤是全局定义的,它将重用步骤。当你打电话删除!在args上,你正在改变全局步骤,这会导致你的第二次调用发生在改变的args上。
放入一个Before钩子和一个撬子,你就可以看到事物的状态。
Before do |scenario|
binding.pry
end
[3] pry(#<Object>)> scenario.steps
=> Cucumber::Ast::StepInvocation, 40034540, Cucumber::Ast::StepInvocation, 40034500