【问题标题】:RSPEC testing controller rendering view?RSPEC 测试控制器渲染视图?
【发布时间】:2015-04-17 03:56:32
【问题描述】:

所以我对使用 RSPEC 进行测试还是很陌生

我只是像这样测试我的控制器的渲染:

describe "GET job" do 
  it "renders the jobs view" do 
  get :jobs
  expect(response).to render_template :jobs
end

但是我的视图(工作)是一个文件夹,而不是一个模板,所以上面的 dosnt 工作。我如何测试以查看响应是否进入作业视图文件夹。在我的工作视图文件夹中,我有许多不同的文件。

我的客户控制器操作如下所示:

 def jobs
    @jobs = @customer.jobs
 end

【问题讨论】:

  • 文件夹中的哪个模板应该由作业操作呈现?
  • render_template("jobs/foobar")

标签: ruby-on-rails testing rspec controller


【解决方案1】:

要测试app/views/jobs/ 内的模板foobar 是否已呈现,您应该使用以下代码:

describe "GET job" do 
  it "renders the jobs view" do 
  get :jobs
  expect(response).to render_template :foobar
end

如果您没有测试 JobsController 并且想确保它仍然呈现 app/views/jobs/foobar,那么您应该将其更改为以下行:

expect(response).to render_template("jobs/foobar")

【讨论】:

    【解决方案2】:

    理想情况下,在 rspec 控制器测试视图渲染已默认存根。要检查控制器规范中的视图渲染,您必须执行以下操作:

    describe "GET job" do 
      render_views
    
      it "renders the jobs view" do 
      get :jobs
    
      expect(response).to render_template("jobs/foobar")
    end
    

    render_views 将渲染控制器操作的各个视​​图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多