Neil Cauldwell <[EMAIL PROTECTED]> writes:
> Pat Maddox wrote:
>> Neil Cauldwell <[EMAIL PROTECTED]> writes:
>>
>>>>
>>> (which it doesn't, therefore suggesting the spec is broken);
>>> def do_get
>>> ThinkingSphinx::Search.stub!(:search).and_return(users)
>>> get :people, :search => "bob"
>>> end
>>>
>>> ...so shouldn't the spec fail if we're returning all the users fixtures
>>> when assigns[:results].should_not include(users)?
>>>
>>> Thanks
>>
>> Well, flip the should_not to should and it ought to fail, and give you a
>> bit more info. Or print the stuff out. I imagine what's ultimately
>> happening is something along the lines of
>>
>> [1,2,3].should_not include([1,2,3])
>>
>> which is true. [1,2,3] is not an element of the array [1,2,3]. I used
>> a simplified example here but it applies equally to an array of User
>> objects.
>>
>> Anyway, what kind of debugging have you done to see what objects you're
>> actually dealing with? I think doing "p assigns[:results]" and "p
>> users" will help point you in the right direction...
>>
>> Pat
>
> Thanks Pat. That really helps. If I do the flip (please ignore the spec
> description);
>
> it "should not include any inactive users in an assigned array of user
> results " do
> do_get
> assigns[:results].should include(users)
> end
>
> Rspec tells me;
>
> should not include any inactive users in an assigned array of user
> results
> expected [] to include []
>
> I was expecting :results to contain something, otherwise, wouldn't this
> spec fail (?), or is nil different to empty?;
>
> it "should assign an array of user results" do
> do_get
> assigns[:results].should_not be_nil
> end
>
> ...so I'm one step closer but I'm now a little confused by the other
> specs.
They are different. This is similar to the example I posted before:
[].should include([])
that will fail...
[[]].should include([])
will pass. Do you see the difference? One of them is an empty array,
and one of them is an array containing a single element (which is itself
an empty array).
nil and [] are not equivalent in Ruby.
Anyway, I'm pretty convinced that your stubbing isn't working at all.
You can verify this by changing
ThinkingSphinx::Search.stub!(:search).and_return(users)
to
ThinkingSphinx::Search.stub!(:search).and_raise("boom!")
If your stubbed method is being called then it'll raise an error, but I
suspect it's not.
As far as the fixtures stuff, I'm afraid I can't help much there. I
think rails db fixtures are the devil and so have managed to put them
completely out of my consciousness.
Pat
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users