我需要设置一个级联的“给定” - 一个属于工厂之前的工厂......在普通的rspec中,我创建了他的第一个工厂,然后拿下它的ID并将其传递给下一个工厂。
@widget =工厂(:某事)
@otherthing = Factory(:other,:widget_id => @ widget.id)
在步骤定义中执行此操作的最佳方法是什么?我的场景说:“给定一个小部件和一个东西”,但这创建了两个步骤,似乎对另一个没有任何了解。
答案 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