On May 6, 2010, at 8:47 AM, Rick DeNatale wrote: > On Thu, May 6, 2010 at 5:02 AM, ben rooney <ben.roone...@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. _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users