Я пытаюсь протестировать контроллер с пространством имен, следующий мой контроллер (/admin/sites_controller.rb):
class Admin::SitesController < AdminController
def create
@site = Site.new(params[:site])
respond_to do |format|
if @site.save
format.html { redirect_to(@site, :notice => 'Site was successfully created.') }
format.xml { render :xml => @site, :status => :created, :location => @site }
else
format.html { render :action => "new" }
format.xml { render :xml => @site.errors, :status => :unprocessable_entity }
end
end
end
end
и мой routes.rb
файл
namespace :admin do
resources :sites
end
Я использую rspec2 для тестирования моего контроллера, и вот моя спецификация контроллера
describe Admin::SitesController do
describe "POST create" do
describe "with valid params" do
it "creates a new Site" do
expect {
post :create, :site => valid_attributes
}.to change(Site, :count).by(1)
end
end
end
end
Но когда я запускаю спецификацию, она выдает следующую ошибку маршрутизации
Admin::SitesController POST create with valid params creates a new Site
Failure/Error: post :create, :site => valid_attributes
NoMethodError:
undefined method `site_url' for #<Admin::SitesController:0xb5fbe6d0>
# ./app/controllers/admin/sites_controller.rb:47:in `create'
# ./app/controllers/admin/sites_controller.rb:45:in `create'
# ./spec/controllers/admin/sites_controller_spec.rb:78
# ./spec/controllers/admin/sites_controller_spec.rb:77
Я думаю, это из-за пространства имен 'admin', которое я использую, но как я могу это исправить?
Я использую