Reloading Associations causes Tests to Fail

I broke a test in an odd way today and it brought up some design and testing questions. I was working through some problems in my integration tests, and all was going well. I found that to get a certain test to pass, I changed this

class Container    belongs_to :parent, :polymorphic=>true    def connected_to?(other)      return false if parent.nil?      parent.connected_to_container?(other)    end end To this:

  def connected_to?(other)     return false if parent.nil?     parent(true).connected_to_container?(other)   end

I then made a few other changes, my integration test passed and I reran the whole test suite. When I did, the unit test for Container which had passed for quite a while, suddenly dumped Red tests all over the place. I discovered that by reloading the association the Mock that I had so carefully crafted to go in its place got replaced by what was actually in the database -- that is nil.

I ended up changing the way my integration tests work a little so I could revert the change in Container, but it left me with some questions:

1) Should a model ever force a reload of its associations?

2) If a model does reload its associations how do you still use mocks?

you need to expect the reload when you build the mocks. so when parent is called it returns the mock.