On Sun, Nov 15, 2009 at 7:50 PM, Marcelo de Moraes Serpa < celose...@gmail.com> wrote:
> Hello list, > > I had a hard time to find out a way to mock the singleton feed method of > the following class: > class RssReader > > def self.feed(feed_url) > output = [] > open(feed_url) do |http| > response = http.read > result = RSS::Parser.parse(response, false) > result.items.each_with_index do |item, i| > output << {:title => item.title, :description => item.description, > :pubDate => item.pubDate, :link => item.link} > end unless result.nil? > end > output > end > end > > Try this: describe "..." do it "..." do http = mock('http') RssReader.should_receive(:open).with('http://this.url')and_yield(http) http.should_receive(:read) .... ... RssReader.feed('http://this.url') end end Make sense? David > Since it is being passed a block, I could not intercept the code inside the > block, the specific code I'd like to stub is the http.read. I have tried to > do: > > Http.should_receive(:read).and_return(xml) #xml being a fixture, loaded > from a file. > > However, the stub is not applied. > > Any ideas on how this could be solved? The only way I could think is to > avoid using the block... > > Thanks, > > Marcelo. > > > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users