RSpec Не найдено ни одного маршрута - PullRequest
0 голосов
/ 28 июня 2019

У меня есть контроллер /dashboard/sites_controller.rb, в рамках которого у меня есть действие attendance_summer_city_camp_integrativ

def attendance_summer_city_camp_integrativ
  @site = Site.find(params[:site_id])
  respond_to do |format|
    format.xlsx
  end
end

Возвращает Excel, как вы можете видеть.

config/routes.rb

namespace :dashboard do
  resources :sites do
    get :attendance_summer_city_camp_integrativ
  end
end

В моем тестовом файле, когда я делаю запрос на получение по этому адресу, я получаю

No route matches {:action=>"/dashboard/sites/24/attendance_summer_city_camp_integrativ.xlsx", :controller=>"dashboard/sites"}

describe 'GET #attendance_summer_city_camp_integrativ' do
  subject do
      get dashboard_site_attendance_summer_city_camp_integrativ_path(site.id, format: :xlsx)
    end
end
Failure/Error: get dashboard_site_attendance_summer_city_camp_integrativ_path(site.id, format: :xlsx)

     ActionController::UrlGenerationError:
       No route matches {:action=>"/dashboard/sites/24/attendance_summer_city_camp_integrativ.xlsx", :controller=>"dashboard/sites"}

Когда я иду по этому адресувручную в браузере работает нормально.

Started GET "/dashboard/sites/6/attendance_summer_city_camp_integrativ.xlsx" for 127.0.0.1 at 2019-06-28 18:18:46 +0200
Processing by Dashboard::SitesController#attendance_summer_city_camp_integrativ as XLSX

Что я делаю не так?

1 Ответ

0 голосов
/ 28 июня 2019

Возможно, это:

describe 'GET #attendance_summer_city_camp_integrativ' do
  subject do
    get dashboard_site_attendance_summer_city_camp_integrativ_path(site.id, format: :xlsx)
  end
end

Должно быть примерно так:

describe 'GET #attendance_summer_city_camp_integrativ' do
  subject do
    get attendance_summer_city_camp_integrativ, {site_id: site.id, format: :xlsx}
  end
end

(я думаю, согласно документам , вам может потребоваться сформироватьваши параметры по-разному для rails 5 v. pre-rails 5.)

У вас есть action с именем attendance_summer_city_camp_integrativ, но ваш тест пытается вызвать действие /dashboard/sites/24/attendance_summer_city_camp_integrativ.xlsx.Который не действие, а полностью сформированный URL.Так, может, проблема в том, чтобы позвонить get dashboard_site_attendance_summer_city_camp_integrativ_path вместо get attendance_summer_city_camp_integrativ?

...