2011-08-30 127 views
1

我需要设置级联“给定” - 属于工厂之前的一个工厂...在普通的rspec中,我会创建他的第一个工厂,然后采取它是ID并传递给下一个工厂。黄瓜:创建一个取决于另一个步骤的步骤定义

@widget =厂(:东西)
@otherthing =厂(:其他:WIDGET_ID => @ widget.id)

中有什么步骤定义要做到这一点的最好办法?我的场景说:“给定一个小部件和一个东西”,但是这会创建两个似乎不了解其他任何内容的步骤。

回答

0

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

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