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)

Examples

describe TeamsController do
describe "GET index" do
it "assigns @teams" do
team = Team.create
get :index
assigns(:teams).should eq([team])
end
it "renders the index template" do
get :index
response.should render_template("index")
end
end
end