我正在通過railstutorial.org網站工作,並且似乎遇到了集成測試問題。假設用戶在表單發佈後能夠正確創建用戶,但在後續測試中失敗,因爲測試數據庫沒有得到回滾支持,這會導致錯誤,因爲驗證用戶不能擁有相同的電子郵件。任何解釋爲什麼記錄會持續下去?如果相關代碼來自this列表。在Rails3中記錄持續過去的測試
回答
注:我是Rails Tutorial的作者。在Peter Cooper reported之後,config.cache_classes = false
行被添加,因此有必要讓RSpec和Spork在他的系統上一起工作。由於我沒有發現它是必要的,並且由於它似乎引入了很多問題(例如在此線程中標識的那些問題),因此該行已被刪除。如果你使用the latest version of the book你不應該遇到這個問題。
看看使用database_cleaner。您的規格助手將包含這樣的事情:
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with :truncation
end
config.before(:each) do
ActionMailer::Base.deliveries = []
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
config.after(:all) do
DatabaseCleaner.clean_with :truncation
end
RSpec已經假設要在事務中運行所有事情,所以我更加困惑,爲什麼它不工作與 – JoeyJ 2011-03-24 19:48:28
看來,這個問題是與
config.cache_classes = false
我有這個設置爲false,假設它會確保不使用陳舊的類數據線,但它似乎在其他方面具有相反的效果。把它變成真正的固定了我所有的古怪,但我仍然困惑於爲什麼。我認爲它可能與操作系統有關,因爲在教程中,對於OSX(我正在運行)將該行設置爲true的操作正常,而其他操作系統需要將其設置爲false
該行是配置/環境中的test.rb文件的一部分 – JoeyJ 2011-03-25 04:15:40
雖然Hartl的教程讓我感到無懈可擊,也許你在這裏提出的問題可以歸類爲重要的遺漏。
此位置:RailsTutorial - chapter 8.4.3 - Test database not clearing after adding user in integration test
和
此位置:Rails 3 Tutorial Chapter 11 "Validation failed: Email has already been taken" error
和
此位置:config.cache_classes = false messing up rspec tests?
...在同一個問題的所有變化。
邁克哈特爾,如果你在那裏,你似乎只是一個問題,遠離RoR教程的完美。
最好的問候,
佩裏
- 1. 持續JavaScript測試
- 2. Rails測試數據庫不會持續記錄更改
- 3. 持續記錄練習
- 4. iOS:UI測試+持續集成?
- 5. Rails3中自定義記錄
- 6. Logcat持續在設備上記錄
- 7. Python - 通過HTML記錄測試結果
- 8. 通過Gradle測試時記錄日誌
- 9. 通過嘗試插入來測試MYSQL中的重複記錄
- 10. 持續集成:確保新的提交已通過測試
- 11. Rails3:form_for/simple_form_for記錄值
- 12. Windows PowerShell持續歷史記錄
- 13. RoR:在測試之前保持日誌記錄
- 14. 計算從過去一直到現在的持續時間php
- 15. 硒IDE測試持續時間
- 16. 什麼是持續時間測試?
- 17. 單元測試/持續集成Simulink/Stateflow
- 18. 查找最近的Rails記錄過去
- 19. 選擇過去三個月的記錄
- 20. 從過去的x周獲取記錄
- 21. 在持續集成中運行測試與手動運行測試
- 22. 過去7天的MySQL計數記錄按0記錄分組,
- 23. 從華廷測試記錄
- 24. 記錄Boost.Test測試用例
- 25. Xamarin測試記錄儀
- 26. 單元測試和記錄
- 27. Silverlight測試記錄器
- 28. 測試記錄軌道3.1
- 29. 記錄TestNG測試案例
- 30. AndroidStudio記錄咖啡測試
本教程似乎使用spork是可選的。不知道它是否重要,但我選擇不使用spork,因爲我認爲它會簡化事情。 RSpec和自動測試會在我的macbook pro上產生0-3秒的結果,這對我來說似乎總是足夠快。我想我一旦寫了足夠大的東西來保證優化開發週期,我就會考慮spork。也許這使我成爲「少數配置」用戶。不知道這是否說明我已經在路上碰到一個碰撞http://stackoverflow.com/q/5308307/657003 – 2011-04-26 17:29:40
這正是我最終做的,因爲這是我從你的回購中得到的唯一區別雖然我不知道有什麼改變這個設置的奇怪之處 – JoeyJ 2011-04-27 07:52:30