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

Pat Maddox mailinglists at patmaddox.com
Wed Mar 31 11:27:09 EDT 2010


On Mar 30, 2010, at 7: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]
>      }
> 
> Many thanks
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

I use a Comparable object whenever possible, as David said.  Other than that, I just do one expectation per line.  That way when one fails, I know exactly where the failure is.

Pat


More information about the rspec-users mailing list