2013-11-21 33 views
0

我想測試我的註冊和使用RSpec的,水豚和factoryGirlRSpec的和水豚測試色器件註冊,用戶已經存在故障

的問題是,測試持續失敗與此登入測試通過色器件登錄從ActiveRecord的消息:

的ActiveRecord :: RecordInvalid: 驗證失敗:電子郵件已經採取

這些都是我的測試:

describe "GET /users/sign_up" do 
it "register user and send email" do 

    user = FactoryGirl.build(:user) 
    visit new_user_registration_path 
    fill_in "Email", :with => user.email 
    fill_in "Password", :with => user.password 
    fill_in "Password confirmation", :with => user.password 
    fill_in "Name", :with => user.name 
    click_button "Sign up" 
    ActionMailer::Base.deliveries.last.to.should include(user.email) 
    page.should_not have_content("Password confirmation") 
end 
end 

和登入測試:在尋找解決的辦法

describe "GET /users/sign_in" do 
it "try to login email password" do 
    user = FactoryGirl.create(:user) 
    visit new_user_session_path 
    fill_in "Email", :with => user.email 
    fill_in "Password", :with => user.password 
    click_button "Sign in" 
    page.should have_content("Signed in successfully.") 
end 
end 

我看到一些人加入database_cleaner並表示,假設幫助。所以我說的database_cleaner寶石 並添加這些行到我的spec_helper.rb文件:

config.use_transactional_fixtures = false 

config.before(:suite) do 
    DatabaseCleaner.strategy = :truncation 
end 

config.before(:each) do 
    DatabaseCleaner.start 
end 

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

,但它仍然沒有工作。

會喜歡一些指導或想法。謝謝!

增加工廠女孩代碼:

require 'factory_girl' 

FactoryGirl.define do 

factory :user do |f| 
    f.sequence(:email) {|n| "dodo#{n}@gmail.com"} 
    f.password "secret123" 
    f.name "dodo" 
end 

factory :partner do |f| 
    f.company "spectoos" 
end 

end 
+0

可以包含用戶的工廠代碼嗎? – toms

+0

已添加。感謝 –

+0

只是一個完整的檢查,但用戶是否可以從以前的測試中存在?你有沒有嘗試從測試數據庫中刪除所有用戶? – toms

回答

0

,我發現我的問題。 測試失敗,因爲我用factoryGirl創建的用戶未被確認。我有確定的設計。

此行之後的任何:

user = FactoryGirl.create(:user) 

我加入這一行:

user.confirm! 

,現在它的罰款。

謝謝

相關問題