[rspec-users] and_yield + instance_eval(&block)

Scott Taylor mailing_lists at railsnewbie.com
Tue Aug 7 21:34:48 EDT 2007


Duh.  I should be using and_return(), not and_yield(), since I am  
actually returning the value
of the instance eval.  The method in question takes one parameter, a  
proc obj (as block).  But
how can I get a handle on that object (since it is anonymous)?

Scott

On Aug 7, 2007, at 9:14 PM, Scott Taylor wrote:

>
> I have the following code, which yields instance eval's the block  
> given:
>
> class Foo
>
>    def bar(&blk)
>      instance_eval &blk
>    end
>
>    def baz
>      yield
>    end
>
> end
>
> The effect of this is that self is reassigned:
>
> Foo.new.bar do
>     # here, self is the instance of Foo
>     # created by new
> end
>
> But normally self is the object in which
> Foo.new.bar {...} occurs.
>
> Foo.new.baz do
>
>    # self is the execution context
>    # in which Foo.new was called,
>    # since a block is a closure
>
> end
>
>
> The second case is easy; it is covered by and_yield (with no  
> arguments).
>
> Is there some way to spec the first case?  Do I smell the need for a
> patch?
>
> Scott
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users



More information about the rspec-users mailing list