在Rails中创建API命名空间控制器

时间:2012-05-10 15:16:15

标签: ruby-on-rails unit-testing ruby-on-rails-3.1 routes

我正在尝试测试我的命名空间控制器而没有太多运气。我有以下路线设置:

namespace :api do
  get 'organization/:id/questions/:number', controller: 'questions', action: 'index', as: 'organization_questions'
end

产生以下路线:

api_organization_questions GET    /api/organization/:id/questions/:number(.:format)      {:controller=>"api/questions", :action=>"index"}

该路由有效,我可以使用以下网址成功发出请求:http://localhost:3000/api/organization/1/questions/1234567890

但是当我尝试在单元测试中向它发出get请求时,我收到以下错误:

  

没有路线匹配{:controller =>“api / questions”,:action =>“/ api / organization / 1 / questions / 1234567890”}

我的获取请求如下所示:

get api_organization_questions_path(@organization.id, '1234567890')

不确定我做错了什么!?

1 个答案:

答案 0 :(得分:2)

你在测试什么? RSpec的? get方法的第一个参数是action。下面的代码应该提出您想要的请求:

describe Api::QuestionsController do
  it "should do something" do
    get :index, :id => @organization.id, :number => '1234567890'
  end
end