黄瓜什么时候/那个参数有相同的object_id?

时间:2014-09-02 06:29:39

标签: ruby cucumber gherkin

如果我打电话两次就知道了

#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调用之间保存相同的字符串?

1 个答案:

答案 0 :(得分:0)

黄瓜步骤是全局定义的,它将重用步骤。当你打电话删除!在args上,你正在改变全局步骤,这会导致你的第二次调用发生在改变的args上。

放入一个Before钩子和一个撬子,你就可以看到事物的状态。

Before do |scenario|
  binding.pry
end

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