Каков соответствующий синтаксис Rspec - PullRequest
0 голосов
/ 28 марта 2012

Я не могу понять, почему мой тест не пройден. Я думаю, что это связано с методом удаления, который я использую. По какой-то причине я не могу получить ссылку на действие удаления. Код для сайта работает, но у меня не может быть Rspec для отображения того, что происходит с сайтом. Есть идеи?

Вид:

    <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>

Тест 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 => "admin@example.com", :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

Выход 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)>' 

А вот результат работы «Рейк-маршруты»:

        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))) 

1 Ответ

1 голос
/ 28 марта 2012

Не совсем уверен, почему это происходит.Но в журнале говорится, что представление пытается отобразить ссылку, которая указывает на hunts#show

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

, и содержит примеры, подобные первой ссылке в представлении:

<%= link_to hunt.name, hunt %>

Я предполагаю, что link_to не может получить идентификатор охоты и выходит с ошибкой RoutingError.hunt может быть ноль?

В любом случае, Бен говорит, что замена предыдущей строки на:

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

исправила это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...