2010-08-18 74 views
0

我手動添加了單元測試來測試我正在構建的庫。我有一些在他們相應的模型中測試沒有任何問題的燈具。Rails3:單元測試庫不會加載燈具

該測試用例繼承自運行fixtures :all的ActiveSupport :: TestCase。

require 'test_helper' 
require 'mylib' 

class MyLibTest < ActiveSupport::TestCase 

    @user = User.find(1) 

    test "Setup" do 
    assert_equal(@user.id, 1) 
    end 

end 

即使user = User.find(1)在每一個測試實際上是一個優良樣板工程,這個試驗引發了一個異常:/Library/Ruby/Gems/1.8/gems/activerecord-3.0.0.beta4/lib/active_record/relation/finder_methods.rb:287:in 'find_one': Couldn't find User with ID=1 (ActiveRecord::RecordNotFound)

我曾嘗試移動fixtures :all到MyLibTest級(在另一篇文章建議),但沒有區別。

如何讓我的測試工作?

編輯
我發現了什麼是錯誤的,這是不是在所有相關的燈具。我想在幾個測試用例中使用相同的用戶對象,所以我在類中添加了@user = User.find ,但不在測試用例內。當我意識到這一點並嘗試將其放入測試用例時,一切都奏效了。尷尬:)

回答

0

我不能太確定到底是怎麼了,沒有看到你的燈具文件是如何設置的,但嘗試這些:

  1. 嘗試移動「燈具:所有」來test_helper.rb中。
  2. 在夾具文件中,你是否在每個記錄上設置「id:」?如果沒有,該ID實際上不會是簡單的增量 - 它是基於燈具的名稱創建的。嘗試使用「User.first」而不是User.find(1)。如果您需要ID爲1,則在燈具上設置「ID:1」。

希望這會有所幫助。

+0

嗨,「fixtures:all」在test_helper.rb中,並且yes id在用戶燈具上設置。真正奇怪的是,User.find(1)在user_test.rb中有效,但在my_lib_test.rb中不起作用。 User.first返回nil。 – Christoffer 2010-08-19 04:54:48

+0

那麼,我發現了什麼是錯的。感謝您花時間幫助:) – Christoffer 2010-08-19 05:04:28