我需要设置级联“给定” - 属于工厂之前的一个工厂...在普通的rspec中,我会创建他的第一个工厂,然后采取它是ID并传递给下一个工厂。黄瓜:创建一个取决于另一个步骤的步骤定义
@widget =厂(:东西)
@otherthing =厂(:其他:WIDGET_ID => @ widget.id)
中有什么步骤定义要做到这一点的最好办法?我的场景说:“给定一个小部件和一个东西”,但是这会创建两个似乎不了解其他任何内容的步骤。
我需要设置级联“给定” - 属于工厂之前的一个工厂...在普通的rspec中,我会创建他的第一个工厂,然后采取它是ID并传递给下一个工厂。黄瓜:创建一个取决于另一个步骤的步骤定义
@widget =厂(:东西)
@otherthing =厂(:其他:WIDGET_ID => @ widget.id)
中有什么步骤定义要做到这一点的最好办法?我的场景说:“给定一个小部件和一个东西”,但是这会创建两个似乎不了解其他任何内容的步骤。
您可以使用与RSpec相同的方法。一个步骤可以访问在不同步骤中设置的实例变量。
正如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