我正在使用: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
我相信,我只是誤解的東西。真的很感激任何指針。
太棒了。那麼,我的測試是否有意義?或者你會採取另一種方法呢?我是很多後端的新手。我在其他地方讀過,測試框架的默認功能甚至不是很好的做法。 –
好吧,測試Rails的工作是有風險的。在這裏,您可以測試協會的工作和測試您的燈具。測試關聯應該測試邏輯,如果邏輯很微不足道(就像這裏),那麼不需要測試。另一方面,探索性測試和測試您的設置,然後刪除測試是一種很好的做法。它通過在測試工具中進行探索性開發來鼓勵TDD。 –