黄瓜:创建依赖于另一步骤的步骤定义

时间:2011-08-30 17:48:52

标签: cucumber

我需要设置一个级联的“给定” - 一个属于工厂之前的工厂......在普通的rspec中,我创建了他的第一个工厂,然后拿下它的ID并将其传递给下一个工厂。

  

@widget =工厂(:某事)
  @otherthing = Factory(:other,:widget_id => @ widget.id)

在步骤定义中执行此操作的最佳方法是什么?我的场景说:“给定一个小部件和一个东西”,但这创建了两个步骤,似乎对另一个没有任何了解。

2 个答案:

答案 0 :(得分:0)

您可以使用与RSpec相同的方法。步骤可以访问在不同步骤中设置的实例变量。

答案 1 :(得分:0)

正如Andy所说 - 场景中的步骤可以通过实例变量彼此共享状态(因为每个场景World对象的新实例中执行)。

在你的情况下,我会写一些类似的东西:

Given /^a widget$/ do
    @the_widget = Factory(:something)
end

Given /^a thing$/ do
    raise "Must create a widget first!" if @the_widget.nil? # In case the scenario author forgets the widget-creation step

    @the_otherthing = Factory(:other, :widget_id => @widget.id)
end