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

Rick DeNatale rick.denatale at gmail.com
Thu May 6 09:47:01 EDT 2010

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%"]})

Rick DeNatale

Blog: http://talklikeaduck.denhaven2.com/
Github: http://github.com/rubyredrick
Twitter: @RickDeNatale
WWR: http://www.workingwithrails.com/person/9021-rick-denatale
LinkedIn: http://www.linkedin.com/in/rickdenatale

More information about the rspec-users mailing list