[rspec-users] Best way to match several attributes of an object?

David Chelimsky dchelimsky at gmail.com
Tue Mar 30 12:43:48 EDT 2010


On Mar 30, 2010, at 9:23 AM, George wrote:

> When you need to check several properties of an object, what is the
> best way to match them all?
> 
> I'm using the 'satisfy' matcher at the moment but perhaps there's a
> better way than this:
>      flight.should satisfy { |f|
>        f.booking_code            == @parsed_pnr_data[:pnr_number] &&
>        f.depart_airport.code     == @parsed_pnr_data[:flights][0]
> [:depart_airport_code] &&
>        f.arrive_airport.code     == @parsed_pnr_data[:flights][0]
> [:arrive_airport_code] &&
>        f.depart_terminal         == @parsed_pnr_data[:flights][0]
> [:depart_terminal] &&
>        f.arrive_terminal         == @parsed_pnr_data[:flights][0]
> [:arrive_terminal] &&
>        f.start_date              == @parsed_pnr_data[:flights][0]
> [:depart_date] &&
>        f.end_date                == @parsed_pnr_data[:flights][0]
> [:arrive_date]
>      }

I don't know if this is workable in your case or not, but I like to design objects so you can compare them. Something like:

flight.should == Flight.new :booking_code => @parsed_pnr_data[:pnr_number], .....

HTH,
David


More information about the rspec-users mailing list