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

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


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


More information about the rspec-users mailing list