From: Craig Demyanovich Date: 2008-05-26T02:15:16+09:00 Subject: Re: rSpec - added a "either.or.or" Matcher Agreed. You should specify the different conditions under which the method returns nil or an array in distinct examples. For example, Array#reject! behaves this way. I'd write some examples like: describe Array, "#reject!" do before(:each) do @letters = %w[b c d] end it "returns nil if no changes were made" do @letters.reject! { |letter| letter < 'b' }.should be_nil end it "returns an array of values remaining after ones matching the given criteria are rejected" do @letters.reject! { |letter| letter > 'b' }.should == ['b'] end end By the way, the RSpec lists [ http://rubyforge.org/mail/?group_id=797 ] would be a good place to discuss custom matchers. Regards, Craig