[rspec-users] stub_model() and ActiveRecord Associations
matt at mattwynne.net
Wed Aug 27 08:38:43 EDT 2008
On 27 Aug 2008, at 13:26, David Chelimsky wrote:
> On Wed, Aug 27, 2008 at 7:22 AM, Zach Dennis
> <zach.dennis at gmail.com> wrote:
>> On Wed, Aug 27, 2008 at 3:34 AM, Matt Wynne <matt at mattwynne.net>
>>>> Here's the basic deal:
>>>> => false
>>>> AR does not cache objects, so when you ask it for what you *think*
>>>> might the same object twice, you get different ones.
>>> I thought as much... So does AR just cache the object's
>>> attributes instead
>>> and construct them on the fly as and when you ask for them?
>> It caches the SQL statements and their results. It uses the cached
>> results to build an instance of your model. Although the identify of
>> the objects are different, they are equal.
>> f = Foo.create :name => "blah"
>> f.equal?(Foo.last) # false
>> f == Foo.last # true
>> I don't know your ultimate goal,
> He's trying to set a message expectation on an object that gets
> returned by AR. Since AR builds a new object for each request, you
> can't get a handle on it in the code example.
You've got it. I worked around it using the foo.stub!(:bars) = 
hack, but I too feel dirty about it.
I think I'm going to need a couple of old-fashioned database-coupled
tests to prove to myself that all this works OK.
More information about the rspec-users