On 8/5/07, Scott Taylor <[EMAIL PROTECTED]> wrote: > > I have a mock of an instance of a class which descends from Array: > > class ArrayDescendent < Array; end > > #... in the specs... > @descendent = mock ArrayDescendent > > How would I stub out ArrayDescendent#each, which is inherited from > Array, to return multiple values successively? I could use > and_yield, but that is raising an arity error (the anonymous function/ > block should expect only *one value at a time, but and_yield is > yielding both values once). Should I be using a lambda expression here? > > Tips are welcome...Thanks, > > Scott > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
Hey Scott, I'm not sure if there's a way you can currently do that (there may be and I just couldn't figure it out). However I agree it's useful, and I whipped up a quick patch to provide that behavior. http://rubyforge.org/tracker/index.php?func=detail&aid=12841&group_id=797&atid=3151 My example spec is it "should support yielding consecutive values" do yielded_values = [] @obj.stub!(:method_that_yields).and_yield_consecutively("abc", 123, :foobar) @obj.method_that_yields {|val| yielded_values << val } yielded_values.should == [ "abc", 123, :foobar ] @obj.rspec_verify end How's that? Pat _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users