2013-03-05 48 views
1

我使用黃瓜爲我的Rails應用程序,但得到的問題寫BDD而對於試運行「黃瓜」同時使用黃瓜爲BDD在軌道3

我的數據庫中獲取的問題是「TEST_DB」。當我運行黃瓜功能/ my_Feature_file.feature時,它顯示場景通過或失敗,但隨之而來,它也在清理我的數據庫。

我是黃瓜的新手。所以請告訴我,測試時默認是運行黃瓜時,數據庫將被清理。 像如果我正在爲用戶登錄編寫BDD,那麼如果沒有任何記錄,那麼我的步驟將如何檢查用戶是否有效?

我使用:

的Gemfile(測試) -

group :test do 
    gem 'ZenTest' 
    gem 'autotest-rails' 
    gem 'autotest-growl' 
    gem 'selenium' 
    gem 'selenium-client' 
    gem 'capybara' 
    gem 'database_cleaner' 
    gem 'cucumber-rails' 
    gem 'cucumber' 
    gem 'rspec-rails' 
    gem 'spork' 
    gem 'xpath' 
    gem 'launchy' 
    gem 'cucumber-sinatra' 
    gem 'webrat' 
end 

功能/支持/ env.rb-

require 'cucumber/rails' 
Capybara.default_selector = :css 
ActionController::Base.allow_rescue = false 

begin 
    DatabaseCleaner.strategy = :transaction 
    #DatabaseCleaner.strategy = nil 
rescue NameError 
    raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it." 
end 

Cucumber::Rails::Database.javascript_strategy = :truncation 

我試着使用:

DatabaseCleaner.strategy =零

黃瓜::滑軌:: World.use_transactional_fixtures =假

有人可以清除我的困惑,引導我正確的方法是什麼?非常感謝幫助。

回答

0

如果你不想要,你不必使用它。我們沒有在我們的項目中。如果你不想使用這個,你不需要設置use_transactional_fixtures

如果要使用它,可以通過註冊新用戶開始功能測試,然後使用該用戶驗證登錄和註銷。一旦你的測試運行,那麼用戶將在最後被DatabaseCleaner刪除。

+0

這已經設置爲false。 – 2013-03-05 11:40:35

+0

你問過你應該採取的步驟,這就是我解釋的。我建議你清楚地重新提出你的問題,重點是問題是什麼。 – jtblin 2013-03-05 11:44:28

+0

我想我現在得到了我的答案,因爲在實際測試運行之前db清理器正在清除db。所以我需要使用種子數據或者必須使用工廠女孩,以便在運行測試時記錄應該在那裏。 – 2013-03-05 11:48:37

1

如果您不想清理數據庫,只需從Gemfile中刪除database_cleaner gem並清理env.rb文件即可。

我強烈建議你保留它。爲每個場景重新設置數據庫的目的是爲了證明功能從原始設置開始工作,而不是由於預先存在的數據條件。

每個場景都應該獨立於其他場景。

+0

是啊這就是爲什麼現在我寧願去工廠女孩或過濾器加載測試數據。 – 2013-03-06 05:19:47