2012-05-10 40 views
0

我正在使用:through方法設置多對多關係,並且想要測試是否已正確設置所有內容。如何測試我已經在rails中正確設置了多對多關係?

class MenuItem < ActiveRecord::Base 
    belongs_to :products #burger 
    belongs_to :additions #extra mustard 
end 

產品會像漢堡包

class Product < ActiveRecord::Base 
    has_many :menu_items 
    has_many :additions, through: :menu_items 
end 

增加會像

class Addition < ActiveRecord::Base 
    has_many :menu_items 
    has_many :products, through: :menu_items 
end 

我已經建立了我的燈具,這樣一個漢堡包應該有2個增加額外的芥末或醬菜與之相關聯。現在我想測試該協會的工作。不完全確定如何做到這一點。我試過這個:

在夾具中我把漢堡包的ID設置爲22.還設置漢堡有芥末和泡菜(2個補充)。

test "product 22 should have 2 additions associated with it" do 
    menu_item = Product.find(22).additions 
    assert_equal menu_item.count, 2 
end 

我得到一個未初始化的常量錯誤

NameError: uninitialized constant Product::Additions 

我相信,我只是誤解的東西。真的很感激任何指針。

回答

2

這個錯誤是因爲你需要使用單數爲belongs_to的。

class MenuItem < ActiveRecord::Base 
    belongs_to :product #burger 
    belongs_to :addition #extra mustard 
end 
+0

太棒了。那麼,我的測試是否有意義?或者你會採取另一種方法呢?我是很多後端的新手。我在其他地方讀過,測試框架的默認功能甚至不是很好的做法。 –

+0

好吧,測試Rails的工作是有風險的。在這裏,您可以測試協會的工作和測試您的燈具。測試關聯應該測試邏輯,如果邏輯很微不足道(就像這裏),那麼不需要測試。另一方面,探索性測試和測試您的設置,然後刪除測試是一種很好的做法。它通過在測試工具中進行探索性開發來鼓勵TDD。 –

相關問題