我想測試一個名字空間的控制,以下Rails3中和Rspec2控制器測試是我的控制器(/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
我猜它是因爲我使用的是「管理」命名空間,但我怎麼能解決呢?
我使用的這個樣子
- Rails3中
- Rspec2
- Linux的
喜iWasRobbed,對不起,我將鐵鍋上,多虧 – sameera207