2011-08-30 140 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