2013-03-05 58 views
0

我下面railscast#275測試我忘了密碼。我遇到麻煩,通過電子郵件已被採取錯誤。有了編碼,我按照教程我想接收這個錯誤,「錯誤沒有鏈接與標題或文本」密碼「。相反,這就是我所得到的,」驗證失敗:電子郵件已被採取(ActiveRecord: :RecordInvalid)」停留在電子郵件的驗證錯誤已經採取

我已經做了搜索,無法找到它的解決方案

這裏的password_resets_spec.rb:

require 'spec_helper' 

describe "PasswordResets" do 
    it "emails user when requesting password reset" 
    user = FactoryGirl.create(:user) 
    visit login_path 
    click_link "password" 
    fill_in "Email", :with => user.email 
    click_button "Reset Password" 
    end 

factories.rb:

FactoryGirl.define do 
    factory :user do 
    sequence :email do |n| "test#{n}@example.com" 
    end 
    password "secret" 
    end 
end 

回答

2

這裏就是我做的時候,我終於發現它開始工作之前。我安裝了數據庫清理。然後我做了命令:

耙分貝:重置 耙分貝:遷移 耙分貝:測試:準備

此之後我發現我不得不添加一個「做」給「」電子郵件結束。用戶在請求密碼重置」

現在我沒有錯誤,我可以在我的測試冒險繼續感謝那些誰試圖幫助

0

工廠定義似乎確定。

我會通過確保您的測試數據庫是運行規範前空開始。可能存在現有的用戶記錄「[email protected]」徘徊。另外,你是否試圖只運行這個例子?它有什麼區別?

+0

我跑耙分貝:。測試:準備和它依舊不改錯誤 – pwz2000 2013-03-05 18:47:34

+0

你是否只運行那個例子?當你添加'User.count.should be_zero'as會發生什麼你的規格的第一行? – boulder 2013-03-05 19:02:03

+0

使用test1會產生相同的錯誤。添加user.count產生「未定義的局部變量或方法'be_zero'」 – pwz2000 2013-03-05 19:21:25

0

貌似在運行測試用例時創建沒有回滾工廠/刪除的記錄。

添加before(:each)刪除先前記錄的示例執行

before(:each) do 
User.delete_all 
end 
+0

這只是爲#(NameError)產生」未定義的局部變量或方法'login_path「 – pwz2000 2013-03-05 18:22:40

+0

我可以通過使用」訪問「/sessions/login「#login_path」。因此,它仍然會回到原來的電子郵件的原始錯誤。 – pwz2000 2013-03-05 18:42:05

+0

@ pwz2000:我已經更新瞭解決方案並使用'before(:each)'回調 – AnkitG 2013-03-05 19:50:14