0

最近、これまで見たことのない問題に遭遇しました。私は次のようなクラスを持っています:

class Foo < ActiveRecord::Base
  belongs_to :bar, inverse_of: :foos
end

class Bar < ActiveRecord::Base
  has_many :foos, inverse_of: :bar
end

そして、私は次のようにファブリケーターを使用しています(これらが無意味に見えることはわかっています):

Fabricator(:foo, class_name: Foo) do
  bar fabricator: :bar
end

Fabricator(:bar, class_name: Bar) do
end

そしてテスト(RSpec)で私はこのスタブをやっています:

foo = Fabricate(:foo) # I can confirm that both foo and foo.bar are correct here.
Foo.stub(:find_by_id).and_return(foo)

私の問題はテストにあります。呼び出されると、正しくFoo.find_by_id返されますが、RSpec モックであり、結果を保存すると、次のエラー メッセージが表示されます。foofoo.barfoo

Mock received unexpected message :marked_for_destruction? with (no args)

アソシエーションがスタブと一緒に渡されるようにするにはどうすればよいですか? このスレッドを見つけましたが、それが何を意味するのか完全には解読できません。

どんな助けでも大歓迎です!

4

1 に答える 1