Hey Doug,

That won't work because of how Ruby handles the equality of lambdas/ procs.

From my experience there are 2 approaches.

1) Test both the "call" and the block together. So instead of mocking Util, mock SfProperty.

or

2) Store the lambda somewhere (like a Class variable). Test the lambda separately, and test the "call" separately, but treat the lambda as a black box. (though I'm sure you could do something funky with redefining the Class variable within the test, and asserting that the redefinition got passed in the "call" method).

Testing passed lambdas/procs can be tricky because you're testing the behavior of something that _defines behavior_ and passes it to something else.

On Jul 7, 2009, at 7:27 AM, doug livesey wrote:

Hi -- can I specify the block that should be called with a method?
Sort of like this:

    it "should bulk update the properties_params in groups of 50" do
      block = lambda do |params|
        SfProperty.put( :bulk_update, :sf_properties => params )
      end

Util.should_receive( :do_to_in_groups_of ).with( @properties_params, 50, &block )

      do_call
    end

Or am I dreaming?
Cheers,
   Doug.
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

--
Zach Moazeni
http://simplechatter.com



_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to