technicalpickles

Open Source ProjectsCode that Might be Useful to You

Talks I've GivenOn Technologies and Ideas

ThoughtsWhere I Sometimes Write Things

Resume If You Still Believe In Those

Follow Me On

GitHubIf coding is your thing

TwitterIf you tweet

TumblrIf you're ADD

Use ActionController::TestCase


I’ve been coming across a lot of Rails functional tests that look like this:

require File.dirname(__FILE__) + '/../test_helper'
require 'owners_controller'

# Raise errors beyond the default web-based presentation
class OwnersController; def rescue_action(e) raise e end; end

class OwnersControllerTest < Test::Unit::TestCase
  def setup
    @controller = OwnersController.new
    @request = ActionController::TestRequest.new
    @response = ActionController::TestResponse.new
    # ...
  end
  # ...
end

Some of it is repetitive (you always have to always create the controller, request, and response, and reopening the class). Some is unnecessary (requiring the file).

I’m not sure when it was added, but Rails provides ActionController::TestCase which does this boilerplate stuff up for you. Here’s what we can change to it to:

require File.dirname(__FILE__) + '/../test_helper'

class OwnersControllerTest < ActionController::TestCase
  def setup
    # ...
  end
  # ...
end

Much cleaner, right?

comments powered by Disqus