【问题标题】:Testing member routes of a resources in rails3 with rspec使用 rspec 测试 rails3 中资源的成员路由
【发布时间】:2011-03-24 21:51:20
【问题描述】:

我正在创建一个允许用户参加考试的应用程序。考试对象有_many questions,我希望用户分两部分参加考试。为了实现这个工作流程,我在 config/routes.rb 中创建了以下路由:

resources :exam do
  member do
    get 'get_part1'
    put 'put_part1'
    get 'get_part2'
    put 'put_part2'
  end
end

所以,当用户发出 GET /exam/:id/get_part1 时,他们会看到第一组问题,等等......我已经完成了所有这些工作,现在我正在尝试为它编写测试 - 我知道这是倒退的,但我花了一段时间才弄清楚复杂的形式和东西。我想测试您是否无法访问考试控制器,除非您是登录用户。这对于 new 和 create 来说是直截了当的,但我无法弄清楚如何测试嵌套成员。到目前为止,这是我尝试过的:

before(:each) do
  @exam = Exam.create
end                                                       

it "should deny access to 'get_part1'" do
  get get_part1_exam_path(@exam)                            
  response.should redirect_to(signin_path)
end

但是,此测试失败并出现以下错误:

Failure/Error: get get_part1_exam_path(@exam)
ActionController::RoutingError:
  No route matches {:controller=>"exams", :action=>"/exams/1/get_part1"}

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: ruby-on-rails-3 routing rspec


    【解决方案1】:

    试试那个:

    get :get_part1, :id => @exam   (or @exam.id)
    

    【讨论】:

    • 像魅力一样工作。谢谢马库斯!
    猜你喜欢
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 2012-06-15
    • 1970-01-01
    • 2011-08-21
    • 2011-08-04
    • 1970-01-01
    相关资源
    最近更新 更多