0

:throughメソッドを使用して多対多の関係を設定しており、すべてが正しく設定されていることをテストしたいと思います。

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

私は何かを誤解しているだけだと確信しています。どんなポインタでも本当にありがたいです。

4

2 に答える 2

2

エラーは、belongs_toに単数を使用する必要があるためです。

class MenuItem < ActiveRecord::Base
  belongs_to :product #burger
  belongs_to :addition #extra mustard
end
于 2012-05-10T11:53:15.480 に答える
0

shoulda-matchers宝石をチェックしてください: https ://github.com/thoughtbot/shoulda-matchers#activerecord-matchers

于 2012-05-10T10:28:42.133 に答える