That's strange °_° In my app it fails:
====================================================================
.F.

Failures:

  1) SessionsController POST to 'login' returns http success
     Failure/Error: post '/login'
     ActionController::RoutingError:
       No route matches {:controller=>"sessions", :action=>"/login"}
     # ./spec/controllers/sessions_controller_spec.rb:15:in `block (3
       levels) in <top (required)>'
====================================================================


That's rake routes:
====================================================================
          login POST   /login(.:format)          sessions#login_create
                GET    /login(.:format)                sessions#login
         logout GET    /logout(.:format)               sessions#logout
          users GET    /users(.:format)                users#index
                POST   /users(.:format)                users#create
       new_user GET    /users/registrati(.:format)     users#new
      edit_user GET    /users/:id/edit(.:format)       users#edit
           user GET    /users/:id(.:format)            users#show
                PUT    /users/:id(.:format)            users#update
                DELETE /users/:id(.:format)            users#destroy
====================================================================


And this is the failing spec:
====================================================================
require 'spec_helper'

describe SessionsController do
  describe "GET 'login'" do
    before { get 'login' }

    it "returns http success" do
      response.should be_success
    end
  end

  describe "POST 'login'" do
    it "returns http success" do
      post '/login'
      response.should be_success
      response.should render_template 'sessions/login_create'
    end
  end

  describe "GET 'logout'" do
    it "returns http success" do
      get 'logout'
      response.should be_success
    end
  end
end
====================================================================


If I change `post '/login'` with `post 'login'` it fails with:
====================================================================
F..

Failures:

  1) SessionsController POST to 'login' returns http success
     Failure/Error: response.should render_template
'sessions/login_create'
       expecting <"sessions/login_create"> but rendering with
<"sessions/login, layouts/application">
     # ./spec/controllers/sessions_controller_spec.rb:17:in `block (3
levels) in <top (required)>'
====================================================================

By this error, it seems to me that post actually perform a get, really
strange @_@

7stud, which versions of rails & rspec do you have? Mine:
  * rails (3.2.6)
  * railties (3.2.6)
  * rspec (2.11.0)
  * rspec-core (2.11.0)
  * rspec-expectations (2.11.1)
  * rspec-mocks (2.11.1)
  * rspec-rails (2.11.0)

One thing I've noted in your spec is that in the outermost describe you
pass a string. If I do that, rspec complains about uninitialized
`@controller`; if I move the spec in `spec/` dir (actually it's in
`spec/controllers/`), the `post` method isn't found @_@
What's wrong with me? ._.

-- 
Posted via http://www.ruby-forum.com/.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to