2010-05-06 20 views
0

我從包含模式但在表中沒有數據的測試數據庫開始。我運行這樣的測試Rails 2.3.5表在測試運行結束時由夾具填充,而不是在開始時

cd test/ 
ruby unit/directive_test.rb 

我得到的失敗表明代碼在數據表中找不到數據。但是,我在運行該測試後查看錶,數據現在位於表中。事實上,如果我立即再次運行測試,我就不會失敗。

所以看起來夾具正在被加載到表格中,以至於我的某個模塊找不到它。

  1. 何時加載燈具? app/model/*.rb文件執行後還是之前?
  2. 如果是模型執行有沒有辦法延遲加載?

此問題在運行rake test:units時也相關,因爲該任務在測試數據完成後清除測試數據。

+0

您的燈具應該在'test/fixtures/model_name.yml'下,除非它們正在被遷移填充。這聽起來像你打破慣例,這就是爲什麼測試打破。查看測試指南,看看是否設置了正確的方法:http://guides.rubyonrails.org/testing.html – 2010-05-06 17:30:54

+0

我所有的燈具都在'test/fixtures /'下,所以我不認爲這是問題所在。這個問題似乎是一個時機。我的猜測是,要正確加載夾具,夾具使用的模型必須先加載,迫使夾具最後加載。在我的一個模型中,我嘗試將數據讀入任何方法之外的類變量,因此存在這樣的問題:沒有數據可以讀取(尚未)。 – rlandster 2010-05-06 19:44:13

回答

0

首先看到this thread,看看它是否可以幫助你。

如果您運行鐵路任務耙測試:它將確保在運行您的代碼之前加載所有燈具。如果你正在運行測試,並且你的單元測試沒有引用test_help.rb,那麼它可能不會加載燈具。您應該嘗試通過rake任務運行它。

我給你的另一個提示是,你忘了夾具和使用工廠(這裏我推薦factory_girl)。需要一段時間才能使用,但它是值得的。燈具太難管理,更新等。

another post解釋工廠背後的概念很少。

相關問題