2010-10-24 85 views
9

我有一個場景大綱有多個場景。我希望我的Before鉤子只運行一次,這樣我就可以引導需要針對所有場景運行的ActiveRecord對象。問題是如果我使用黃瓜:在所有場景的鉤子運行只有一次之前

Before do 
    # my code here 
end 

這將在每個場景之前執行。無論如何要爲整個大綱運行一次嗎?

回答

3

我認爲,如果你只是在功能創建在一個文件中的對象/支持他們將堅持:

ImportantThing.create(:name => "USEFUL THING") 

這是因爲之前每情景黃瓜會啓動一個數據庫事務,然後回滾到其之前的狀態,其中應包含您已加載的對象。

0

我有同樣的問題,我需要爲所有事件記錄測試創建一次訂閱者管理器。如果我只是使用一個前鉤子或一個常規步驟(例如一個給定),管理器將在每個場景之前創建。

我的解決方案最終是在我的第一個場景中使用標記的前鉤子。

Before('@first_logging_scenario') do 
    # do something useful 
end 

要關閉我的經理,我用了一個標記機後與我的最後一個場景

After('@last_logging_scenario') do 
    # do something useful 
end