2012-03-27 3 views
0

Je n'arrive pas à comprendre pourquoi mon test échoue. Je pense que cela a à voir avec la méthode de suppression que j'utilise. Pour une raison quelconque, je ne peux pas obtenir le lien correct pour l'action de suppression. Le code pour le site fonctionne, mais je n'arrive pas à avoir Rspec pour mapper sur ce qui se passe avec le site. Des idées?Quelle est la syntaxe Rspec appropriée

Voir:

<li> 
     <%= link_to hunt.name, hunt %> 
     <% if current_user && current_user.admin? %> 
     | <%= link_to "edit", edit_hunt_path(hunt) %> 
     | <%= link_to "delete", hunt, :method => :delete, :confirm => "You sure?", 
            :title => "Delete #{hunt.name}" %>  
     <% end %> 
    </li> 

tests Rspec:

require 'spec_helper' 

describe HuntsController do 
    render_views 

    describe "GET 'index'" do 
    ... 
    describe "for users who are admins" do 
     before(:each) do 
      admin = FactoryGirl.create(:user, :email => "[email protected]", :admin => true) 
      test_sign_in(admin) 
     end 
     ... 
     it "should show delete link" do 
      get 'index' 
      Hunt.paginate(:page => 1).each do |hunt| 
      response.should have_selector('a', :href => hunt_path(@hunt) , :content => 'delete') 
      end 
     end    
    end 
    end 

sortie Rspec:

1) HuntsController GET 'index' for users who are admins should show delete link 
    Failure/Error: response.should have_selector('a', :href => hunt_path(@hunt) , :content => 'delete') 
    ActionController::RoutingError: 
     No route matches {:action=>"show", :controller=>"hunts"} 
    # ./spec/controllers/hunts_controller_spec.rb:64:in `block (5 levels) in <top (required)>' 
    # ./spec/controllers/hunts_controller_spec.rb:63:in `block (4 levels) in <top (required)>' 

Et voici la sortie de course "routes râteau":

 users GET /users(.:format)      {:action=>"index", :controller=>"users"} 
       POST /users(.:format)      {:action=>"create", :controller=>"users"} 
    new_user GET /users/new(.:format)     {:action=>"new", :controller=>"users"} 
    edit_user GET /users/:id/edit(.:format)    {:action=>"edit", :controller=>"users"} 
     user GET /users/:id(.:format)     {:action=>"show", :controller=>"users"} 
       PUT /users/:id(.:format)     {:action=>"update", :controller=>"users"} 
       DELETE /users/:id(.:format)     {:action=>"destroy", :controller=>"users"} 
     hunts GET /hunts(.:format)      {:action=>"index", :controller=>"hunts"} 
       POST /hunts(.:format)      {:action=>"create", :controller=>"hunts"} 
    new_hunt GET /hunts/new(.:format)     {:action=>"new", :controller=>"hunts"} 
    edit_hunt GET /hunts/:id/edit(.:format)    {:action=>"edit", :controller=>"hunts"} 
     hunt GET /hunts/:id(.:format)     {:action=>"show", :controller=>"hunts"} 
       PUT /hunts/:id(.:format)     {:action=>"update", :controller=>"hunts"} 
       DELETE /hunts/:id(.:format)     {:action=>"destroy", :controller=>"hunts"} 
    sessions POST /sessions(.:format)     {:action=>"create", :controller=>"sessions"} 
    new_session GET /sessions/new(.:format)    {:action=>"new", :controller=>"sessions"} 
     session DELETE /sessions/:id(.:format)    {:action=>"destroy", :controller=>"sessions"} 
        /hunts(.:format)      {:controller=>"hunts", :action=>"index"} 
     signup  /signup(.:format)      {:controller=>"users", :action=>"new"} 
     signin  /signin(.:format)      {:controller=>"sessions", :action=>"new"} 
     signout  /signout(.:format)      {:controller=>"sessions", :action=>"destroy"} 
     contact  /contact(.:format)      {:controller=>"pages", :action=>"contact"} 
     about  /about(.:format)      {:controller=>"pages", :action=>"about"} 
     help  /help(.:format)      {:controller=>"pages", :action=>"help"} 
     root  /         {:controller=>"pages", :action=>"home"} 
        /:controller(/:action(/:id(.:format))) 
+0

Quelle est la suite de l'erreur? (Vous avez seulement posté les 3 premières lignes de la sortie rspec) –

+0

OK, j'ai mis à jour mon message avec le message d'erreur complet. –

+0

Magnifique! C'est ce qu'il a fait. Je vous remercie! –

Répondre

1

Je ne sais pas exactement pourquoi cela se produit. Mais les états du journal que la vue tente de rendre un lien qui pointe vers hunts#show

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

a des exemples comme le premier maillon de la vue:

<%= link_to hunt.name, hunt %> 

Je suppose que le link_to ne obtenir l'ID de la chasse et s'échappe avec un RoutingError. hunt pourrait être nul?

Quoi qu'il en soit, Ben dit le remplacement de la ligne précédente avec:

<%= link_to hunt.name, hunt_path(hunt) %> 

fixe cela.

Questions connexes