【问题标题】:Creating an API namespaced controller in Rails在 Rails 中创建 API 命名空间控制器
【发布时间】:2012-05-19 05:02:05
【问题描述】:

我正在尝试测试我的命名空间控制器,但运气不佳。我有以下路线设置:

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"}

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

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

没有路由匹配 {:controller=>"api/questions", :action=>"/api/organization/1/questions/1234567890"}

我的 get 请求如下所示:

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

不知道我做错了什么!?

【问题讨论】:

  • @juwiley 这是问题中代码的第二个 sn-p:api_organization_questions GET /api/organization/:id/questions/:number(.:format) {:controller=>"api/questions", :action=>"index"}
  • 啊,对不起。比较 test.log 和 development.log?参数不同?

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


【解决方案1】:

您使用什么进行测试?规范? get 方法的第一个参数是操作。下面的代码应该发出你想要的请求:

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

【讨论】:

    猜你喜欢
    • 2014-05-19
    • 1970-01-01
    • 2023-03-11
    • 2012-07-08
    • 1970-01-01
    • 2014-09-27
    • 2017-01-18
    • 2017-12-13
    • 1970-01-01
    相关资源
    最近更新 更多