Cucumber:创建依赖于另一个步骤的步骤定义

Cucumber:创建依赖于另一个步骤的步骤定义,cucumber,Cucumber,我需要设置一个级联的“给定”--一个在它之前属于工厂的工厂。。。在简单的rspec中,我将创建第一个工厂,然后获取其ID并将其传递给下一个工厂 @widget=工厂(:某物) @otherthing=工厂(:other,:widget\u id=>@widget.id) 在步骤定义中执行此操作的最佳方法是什么?我的场景是:“给定一个小部件和一件东西”,但这会创建两个步骤,而这两个步骤似乎对另一个一无所知。您可以使用与RSpec相同的方法。一个步骤可以访问在不同步骤中设置的实例变量。正如Andy所

我需要设置一个级联的“给定”--一个在它之前属于工厂的工厂。。。在简单的rspec中,我将创建第一个工厂,然后获取其ID并将其传递给下一个工厂

@widget=工厂(:某物)
@otherthing=工厂(:other,:widget\u id=>@widget.id)


在步骤定义中执行此操作的最佳方法是什么?我的场景是:“给定一个小部件和一件东西”,但这会创建两个步骤,而这两个步骤似乎对另一个一无所知。

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

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

在你的情况下,我会这样写:

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