无法测试嵌套的Rails控制器

时间:2015-02-04 18:10:40

标签: ruby-on-rails rspec controller

如何设法测试 Task :: HoursController ? 来自我的rspec测试的请求命中 HoursController ,而不是 Task :: HoursController

路线

# POST /tasks/:task_id/hours(.:format) tasks/hours#create

测试

describe Tasks::HoursController, :type => :controller do

  it "assigns all hours as @hours" do
      hour = Hour.create! valid_attributes
      get  :index, { task_id:  @task.id }, valid_session
      assigns(:hours).should eq([hour])
  end
end

日志输出

Processing by HoursController#index as HTML
  Parameters: {"task_id"=>"207"}
Completed 500 Internal Server Error in 3ms

2 个答案:

答案 0 :(得分:0)

我想你需要删除Tasks命名空间(另请注意,在你的描述中你使用单数和代码复数)

并将describe块放在具有任务名称空间的模块中。

module Tasks
  describe HoursController do
    it "assigns all hours as @hours" do
        hour = Hour.create! valid_attributes
        get  :index, { task_id:  @task.id }, valid_session
        assigns(:hours).should eq([hour])
    end
  end
end

答案 1 :(得分:0)

你们很难看到,因为我没有将代码发布到我的控制器上。

修复是这样的:

-class Tasks::HoursSpentController < ApplicationController
+module Tasks
+  class HoursSpentsController < ApplicationController

建议@ vince-v发布。 谢谢文斯。 : - )