🕷 zenspider.com

by ryan davis



sitemap
Looking for the Ruby Quickref?

making functional test failures readable

Published 2006-03-23 @ 13:53

Tagged minitest, rails

Tired of your rails functional test failures being completely unreadable? I’m not terribly fond of rails’ assert_tag but it is better than nothing. However, I never like to read something like the following:

expected tag, but no tag found matching {:attributes=>{:action=>"/admin/themes/update/1"}, 
:tag=>"form"} in: "<!DOCTYPE [...3k worth of crap cut...]</html>".

Ugh! It just does nothing to help you and since it isn’t expressed as a diff, unit_diff is no help in this arena. I have however figured out how to make it much more manageable with the following snippets:

1
2
3
4
5
6
7
class ApplicationController < ActionController::Base
  def initialize(testing=false)
    super()
    self.class.layout(nil) if testing
  end
  [...]
end

and then in your functional tests:

1
2
3
4
def setup
  @controller = MyController.new(true)
  [...]
end

Now your failures contain just the content from the page:

expected tag, but no tag found matching {:attributes=>{:action=>"/admin/themes/update/1"}, 
:tag=>"form"} in: "\n<ul>\n <li>Name: Blue</li>\n <li>Folder: blue</li>\n <li>Description: 
A Plain blue theme</li>\n <li>Masthead: Blue</li>\n <li>Editor: n/a</li>\n</ul>\n\n<a 
href=\"/admin/themes/show/1\">Cancel Editing</a>\n".