我需要設置級聯「給定」 - 屬於工廠之前的一個工廠...在普通的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