Logo: Relish

  1. Sign up
  2. Sign in

Project: RSpec Rails 2.5

Controller specs

Controller specs live in spec/controllers or any example group with
:type => :controller.

A controller spec is an RSpec wrapper for a Rails functional test
(ActionController::TestCase::Behavior). It allows you to simulate a single http request in each example, and then
specify expected outcomes such as:

  • rendered templates
  • redirects
  • instance variables assigned in the controller to be shared with the view
  • cookies sent back with the response

To specify outcomes, you can use:

  • standard rspec matchers (response.code.should eq(200))
  • standard test/unit assertions (assert_equal 200, response.code)
  • rails assertions (assert_response 200)
  • rails-specific matchers:
    • response.should render_template (wraps assert_template)
    • response.should redirect_to (wraps assert_redirected_to)
    • assigns(:widget).should be_a_new(Widget)

Conventions:

Controller

  • pass the controller being specified to the outermost describe method.

    describe AccountController do # ...

Views

Topics

  1. controller spec
  2. views are stubbed by default
  3. render_views
  4. anonymous controller

Last published over 1 year ago by dchelimsky.