Clem R. wrote:
‘e6efb203a1cdebcf5a7406175924fe9991979f68’, :id => artists(:first).id
assert_response :success
assert_equal WEB_SERVER + ‘/controller/rss/blog/artist_1’,
assigns(:blog_url)
assert_include ‘No blog entries’,
@response.body
end
[code]
What would be the mocha form of this?
Not quite sure of the underlying implementation, so not sure I’m going
to be much help, but it feels like there’s way too much stuff being
tested here (Jay Fields has been done some great posts on this recently
on his blog: http://blog.jayfields.com/ and uses Mocha in his examples),
and also, possibly, some of the things being tested should be in a model
(though not necessarily an ActiveRecord one)
First of all I’d test all the fetching and parsing of the feed in a unit
test. Something like:
def test_should_raise_bad_url_error
Net::HTTP.any_instance.expects(:get).returns(Net::HTTPBadRequest.new(“1.1”,“400”,“Bad
Request”)) # assuming your using Net::HTTP to do the fetching
assert_raise(Feed::BadRequestError) { Feed.new(:url =>
“http://some.nonexistant.url”)
end
Then, in the functional test, it’s a lot simpler, cleaner, less brittle,
etc
def test_should_show_message_when_bad_feed_url
Feed.expects(:new).raises(Feed::BadRequestError)
get :feed_widget_details, :k =>
‘e6efb203a1cdebcf5a7406175924fe9991979f68’, :id => artists(:first).id
assert_response :success
assert_select “title”, “No blog entries”
end
I’ve not included the testing of the :blog_url instance variable, as
this is presumably set on all request, and should have its own test.
Hope this helps
Chris
–
http://pushrod.wordpress.com – old dogs, new tricks
http://autopendium.com – a place your old car can call home