У меня есть модель Rails с именем Xpmodule
с соответствующим контроллером XpmoduleController
.
class XpmoduleController < ApplicationController
def index
@xpmodule = Xpmodule.find(params[:module_id])
end
def subscribe
flash[:notice] = "You are now subscribed to #{params[:subscription][:title]}"
redirect_to :action => :index
end
end
Первоначально предполагалось назвать модель Module
, которая по понятным причинам не работает. Однако я все еще хочу, чтобы URL выглядели как /module/4711/
, поэтому я добавил это к своему routes.rb
:
map.connect '/module/:module_id', :controller => 'xpmodule', :action => 'index'
map.connect '/module/:module_id/subscribe', :controller => 'xpmodule',
:action => 'subscribe'
Теперь я хочу протестировать этот контроллер с помощью Rspec:
describe XpmoduleController do
fixtures :xpmodules
context "index" do
it "should assign the current xpmodule" do
xpm = mock_model(Xpmodule)
Xpmodule.should_receive(:find).and_return(xpm)
get "index"
assigns[:xpmodule].should be_an_instance_of(Xpmodule)
end
end
end
за что я получаю No route matches {:action=>"index", :controller=>"xpmodule"}
. Что, конечно, вроде как правильно, но я не хочу добавлять этот маршрут только для целей тестирования. Есть ли способ сказать Rspec, чтобы он вызывал другой URL в get
?