Ich habe eine ziemlich einfache Controller 'ActivityLogsController' in einem 'Admin' Namespace. Wenn rails server
ausgeführt wird, funktioniert alles wie erwartet und ich kann auf Routen wie /admin/activity_logs zugreifen. Wenn ich RSpec-Controller-Spezifikationen ausführe, gibt jeder Aktionstest einen Fehler zurück. Zum Beispiel:Rails app läuft gut, aber RSpec nicht mit einer Route
Failure/Error: get :index
ActionController::UrlGenerationError:
No route matches {:action=>"index", :controller=>"activity_logs"}
OK, ich gebe das ein wenig seltsam aussieht, nicht zeigte der: Reglerwert Namespace wird. Das ist offensichtlich Teil des Problems.
Die routes.rb hat den activity_logs Eintrag richtig Namensraum:
namespace :admin do
resources :activity_logs, except: [:show, :destroy]
end
Natürlich läuft rake routes
gibt mir die erwarteten Namensraum Routen, was die Tatsache widerspiegelt, dass der Server ordnungsgemäß ausgeführt wird.
Der Controller ist in 'app/controllers/admin/activity_logs_controller.rb' definiert und spiegelt seinen Namensraum wider. Es ist definiert als:
class Admin::ActivityLogsController < ApplicationController
...
end
Warum gibt die RSpec-Controller-Spezifikation die Routen nicht korrekt auflösen?
Ich poste dieses mit einer Antwort, falls andere nicht gefunden haben, was sie in anderen Fragen brauchen.