[rspec-users] Failing test despite "expected" and "got" being identical ...

David Chelimsky dchelimsky at gmail.com
Thu May 6 11:04:49 EDT 2010


On May 6, 2010, at 8:47 AM, Rick DeNatale wrote:

> On Thu, May 6, 2010 at 5:02 AM, ben rooney <ben.rooney62 at googlemail.com> wrote:
>> Slightly flummoxed on this one.
>> 
>> Spec::Mocks::MockExpectationError in 'ChartEventsController handling
>> GET /chart_events should find all chart_events given a value'
>>  expected: ([:all, {:conditions=>["value LIKE ?", "%chart_event%"]}])
>>       got: ([:all, {:conditions=>["value LIKE ?", "%chart_event%"]}])
>> 
>> In other words it got exactly what it expected, but, er, failed?
>> 
>> Controller:
>>    if params[:q]
>>      @chart_events = ChartEvent.find(:all, :conditions =>['value LIKE
>> ?', "%#{(params[:q])}%"])
>>    else
>>      @chart_events = ChartEvent.all(:order=>'value')
>>    end
>> 
>> 
>> controller_spec
>>  before do
>>    @chart_event     = mock_model(ChartEvent, :value => "chart_event")
>>    ChartEvent.stub!(:find).and_return([@chart_event])
>>  end
>> 
>>  it "should find all chart_events given a value" do
>>    ChartEvent.should_receive(:find).with([:all, {:conditions=>["value
>> LIKE ?", "%#{@chart_event.value}%"]}]).and_return([@chart_event])
>>    get :index, :q => @chart_event.value
>>  end
> 
> I think you want ChartEvent.should_receive(:find).with(:all,
> {:conditions=>["value LIKE ?", "%#{@chart_event.value}%"]})...
> 
> The output from the message expectation failure is a bit confusing,
> but the argument list to the with method should look like the argument
> list to the expected method.  The expectation here is that find should
> get one argument, an array with a symbol and a hash, rather than two
> parameters, a symbol and a hash.
> 
> It would be better if the failure were reported like this:
> 
> expected: ([:all, {:conditions=>["value LIKE ?", "%chart_event%"]}])
>         got: (:all, {:conditions=>["value LIKE ?", "%chart_event%"]})
> 

FYI - it _is_ reported this way in rspec-2.


More information about the rspec-users mailing list