Ich habe Routen eingerichtet, so dass sie wie erwartet in meinen Controllern funktionieren; Ich kann room_path und rooms_path wie erwartet verwenden.Kontrollspezifikation ActionController :: UrlGenerationError
aber wenn ich versuche, aus irgendeinem Grunde die gleichen Strecken in einer Controller-Spezifikation zu verwenden, dann bekomme ich einen Fehler:
ActionController::UrlGenerationError: No route matches {:action=>"/1", :controller=>"rooms"}
Meine routes.rb Datei:
root "rooms#index"
resources :rooms, :path => '/', only: [:index, :create, :show] do
resources :connections, only: [:create,:destroy]
end
Und wenn ich Rake Routen:
room_connections POST /:room_id/connections(.:format) connections#create
room_connection DELETE /:room_id/connections/:id(.:format) connections#destroy
rooms GET / rooms#index
POST / rooms#create
room GET /:id(.:format) rooms#show
aber mein Test nicht bestanden:
describe "GET room_path(room)" do
it "renders show" do
@room = Room.create
get room_path(@room)
expect(response.status).to eq(200)
expect(response).to render_template(:show)
end
end
Während meine Controller die gleiche Strecke Helfer ohne Probleme verwenden können:
class RoomsController < ApplicationController
def index
end
def create
@room = Room.create
redirect_to room_path(@room)
end
def show
@room = Room.find(params[:id])
end
end
Ich bin mir nicht sicher, warum in meinen Tests es eher für eine „/ 1“ -Aktion der Suche zu gehen scheint als # show Zimmer wie ich es erwarten würde.
aktualisieren
So weiterhin diese spielen ich habe in der Lage, indem auf die folgende den Test grün zu erhalten:
describe "GET room_path(room)" do
it "renders show" do
@room = Room.create
get :show, params: { id: @room.id }
expect(response.status).to eq(200)
expect(response).to render_template(:show)
end
end
Ich würde noch warum meine Helfer zu verstehen, lieben funktionieren aber nicht. Ist das zu erwarten? Manuelles Schreiben des Parameters Hash ist eine Art PITA.