我運行一個測試和所有斷言通,但我再次運行測試,並在我的情況,我收到以下錯誤:
驗證失敗:電子郵件已被採取
它似乎增加:序列(:電子郵件){| n | 「nobody #{n}@xyz.com」}對於女生來說毫無意義
測試似乎有時會通過,而其他測試似乎因錯誤原因而失敗。
請告知問題/解決方案。
我運行一個測試和所有斷言通,但我再次運行測試,並在我的情況,我收到以下錯誤:
驗證失敗:電子郵件已被採取
它似乎增加:序列(:電子郵件){| n | 「nobody #{n}@xyz.com」}對於女生來說毫無意義
測試似乎有時會通過,而其他測試似乎因錯誤原因而失敗。
請告知問題/解決方案。
嘗試在運行測試用例之前刪除表中的所有記錄。
如: -
describe User do
before(:each) do
User.delete_all
end
it "validate e-mail" do
(do staff..)
end
end
我不確定這是一個明確的解決方案,但我使用懶惰屬性添加隨機數到我的產品參考的工廠,factorygirl。
例子:
FactoryGirl.define do
factory :product do
reference {"AB"+rand(999).to_s}
description "Test Product"
quantity {(1..9999).to_a.sample}
price_per_unit {((1..999999).to_a.sample)/100.to_f}
end
end
你任何 「之前(:所有)」 有塊?也許你錯過了相應的「after(:all)」來清理數據。之前(:each)充當事務,因此數據庫得到清理,在(:all)像普通查詢一樣工作之前,您不得不在after(:all)塊中處理清理。
您是在每次運行之前/之後清除測試數據庫嗎?如果你運行測試,然後手動運行'rake db:test:prepare',然後再次運行測試,它們通過還是失敗? (通常這是由'database_cleaner'或事務性固定裝置自動處理的,但某些東西可能配置不正確,或者您的數據庫可能處於不良狀態) – Grantovich