On 20 Oct 2009, at 17:36, Carl Graff wrote:

Is it possible to create a stub that returns hash values.

For example I would like to convert this:
 @siteItem = stub('plmSiteItem', :one => "uno")

To something like this:
 @siteItem = stub('plmSiteItem', {'one' => 'uno', 'two' => 'dos'} )

So that I can do this:
  @siteItem['one'] should == 'uno'
  @siteItem['two'] should == 'dos'

Hi Carl

In Ruby, code like my_object["foo"] is implemented with the method [] eg:

  class Thing
    def [](key)
      # ...
    end
  end

So in RSpec you have to stub :[] like this:

  describe "stub hash" do
    it "quacks like a hash" do
      stub_hash = stub("hash")
      stub_hash.stub(:[]).with("one").and_return("uno")
      stub_hash.stub(:[]).with("two").and_return("dos")
      stub_hash["one"].should == "uno"
      stub_hash["two"].should == "dos"
    end
  end


Actually I first tried to use method double instead of stub - even though I still don't know when each is preferred - but double raised a missing method error for some reason.


Can you post your code?


HTH

Ashley


--
http://www.patchspace.co.uk/
http://www.linkedin.com/in/ashleymoran
http://aviewfromafar.net/







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

Reply via email to