Hi
I'm, being thick, right?:
describe RssReader do
before(:each) do
@uri = mock(URI)
::RSS::Parser.stub!(:parse).and_return(:parsed_rss)
@rss_reader = RssReader.new(@uri)
end
describe "when the RSS content loads" do
# ...
end
describe "when there is an HTTP error" do
before(:each) do
# second argument to OpenURI::HTTPError.new is an IO
@uri.stub!(:read).and_raise(OpenURI::HTTPError.new("Fake
HTTPError", nil))
end
# ...
it "should not attempt to parse the RSS" do
::RSS::Parser.should_receive(:parse)
@rss_reader.rss
end
it "should not attempt to parse the RSS" do
::RSS::Parser.should_not_receive(:parse)
@rss_reader.rss
end
end
end
Here's the output:
% spec -c -fs rss_reader_spec.rb
RssReader when the RSS content loads
- should parse the RSS
- should give access to the items
RssReader when there is an HTTP error
- should attempt to parse the RSS
- should not attempt to parse the RSS
- should fail gracefully
Finished in 0.030693 seconds
5 examples, 0 failures
And the code (not the final state I want it in, mind):
class RssReader
def initialize(uri)
@uri = uri
end
def rss
rss_body =
begin
@uri.read
rescue OpenURI::HTTPError => e
nil
end
::RSS::Parser.parse(rss_body, false)
end
end
Any ideas anyone?
Thanks
Ashley
--
http://www.patchspace.co.uk/
http://aviewfromafar.net/
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users