On Wed, Apr 9, 2008 at 12:33 PM, Rick DeNatale <[EMAIL PROTECTED]> wrote: > On Wed, Apr 9, 2008 at 11:54 AM, David Chelimsky <[EMAIL PROTECTED]> wrote: > > > What are you looking to specify and how do you envision the syntax? > > > > I'm thinking something like: > > > > obj.should yield_with(no_args).on(:message) > > > > def message > > yield > > end > > > > list.should yield_with(1).then(2).then(3).on(:each) > > > > def each > > yield 1 > > yield 2 > > yield 3 > > end > > > > That all make sense? > > Sorta, but what about arguments to the message? > > def message(x, y, z) > yield x+y+z > end > > obj.receiving(:message).with(1,2,3).should yield(6) > > (1..3).receiving(:each_with_index).should > yield_with([1,0]).then([2,1]).then([3,2]) > > or > > (1..3).receiving(:each_with_index).should yield_with([1,0],([2,1],[3,2]) > > (1..3).receiving(:inject).with(0).should yield_with ??????? > > Now it gets tricky since the sequence of yielded values depends on the block > . > > I don't know that I like where this is going.
Agreed, this could get hairy. Perhaps we should chalk this up to implementation detail? Looking back at the OP: it "should yield a message_delivery object" do create_message_in_factory do |message_delivery| message_delivery.should be_instance_of(MessageDelivery) end end How about something more like this as an idiom: it "should yield a message_delivery object" do create_message_in_factory do |message_delivery| return message_delivery end.should be_instance_of(MessageDelivery) end This still uses the contents of the blog to set an expectation, but is perhaps more expressive about the fact that we're not really interested in the contents of the block as much as we are what the end result is. WDYT? _______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users