2014-03-19 73 views
0

有沒有人遇到類似的問題?數據庫清理程序不應該刪除數據

我有一個控制器,這將觸發郵件交付:

def create 
    create! do |success, failure| 
     success.js do 
     CandidateMailer.donation_notification(current_candidate).deliver 
     end 
    end 
    end 

而我得到的郵件:

def donation_notification(candidate) 
    puts Candidate.count # note: during test - count of candidates is 0 
    @candidate = candidate 
    email_with_name = "#{@candidate.profile.name} <#{@candidate.email}>" 
    mail(to: email_with_name, subject: 'New Donation Received!') 
    end 

我不明白爲什麼數據庫清理刪除所有數據前測試是實際完成。

這是一個JS測試(使用Webkit),如果這很重要的話。

這裏是我的配置:

RSpec.configure do |config| 

    config.before(:suite) do 
    DatabaseCleaner.clean_with :truncation 
    end 

    config.before(:each) do 
    if Capybara.current_driver == :rack_test 
     DatabaseCleaner.strategy = :transaction 
    else 
     DatabaseCleaner.strategy = [:truncation, { pre_count: true }] 
    end 

    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 
end 
+0

如果您可以分享rspec示例,那將會很有幫助。 –

回答

0

如果我從code正確認識,既cleanclean_with實際上委託給strategy.clean,這意味着他們都積極乾淨。

當你調用

config.before(:suite) do 
    DatabaseCleaner.clean_with :truncation 
    end 

它清理你的數據庫的測試開始之前。

在測試情況下,如果您將測試數據放在套件的開頭(或每次測試之前),這可能是正確的。