On Wed, Apr 9, 2008 at 1:29 AM, Ben Mabey <[EMAIL PROTECTED]> wrote:
> Hello all,
>  What is the best way to verify that a method yields a block that is
>  passed in?
>
>  Before I added any 'yield' to my method I created this spec:
>
>       it "should yield a message_delivery object" do
>         create_message_in_factory do |message_delivery|
>           message_delivery.should be_instance_of(MessageDelivery)
>         end
>       end
>
>  This passed without me modifying my method which is not what I was
>  hoping for.  So I tried this spec and it gave me red:
>
>       it "should yield the given block" do
>         @block_yieled = false
>         create_message_in_factory do |message_delivery|
>           @block_yieled = true
>         end
>         @block_yieled.should be_true
>       end
>
>
>  Seems kinda hackish, but it did work.  Is this the best way to spec this
>  or is there already a matcher for this?

Another approach might be:

    it "should yield the given block" do
        block_body = mock("block body")
        block_body.should_receive(:got_here)
        create_message_in_factory_do | message_delivery |
            block_body.got_here
        end
   end





-- 
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to