I'm trying to use a mock to return a hash so that #each_pair can  
process it. I can't get it to work. Whatever I return to #each_pair is  
ignored and the block never gets executed. Here's an example  
illustrating the problem.

require File.join(File.dirname(__FILE__), %w[spec_helper])

class MyExample
   attr_reader :result

   def example(data)
     data.each_pair do |key, value|
       @result = {key => value}
     end
   end
end

describe MyExample, "mock#each_pair fails" do
   it "should return a hash after processing the mock using each_pair"  
do
     sample_mock = mock("sample")
     real_hash = {:key => :value}
     sample_mock.should_receive(:each_pair).once.and_return(real_hash)
     obj = MyExample.new
     obj.example(sample_mock)
     obj.result.should == real_hash
   end
end

I tried returning different things in case the hash was the wrong  
intermediate. I tried:
  #and_return([:key, :value])
  #and_return([[:key, :value]])
  #and_return(:key, :value)

None worked. Is this a bug or am I misusing mocks?

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

Reply via email to