如何使用Rails 4.2在RSpec中测试嵌套资源视图?

时间:2015-04-17 03:22:49

标签: ruby-on-rails ruby testing rspec ruby-on-rails-4.2

我正在尝试测试具有嵌套资源路径的视图但测试仍然失败并且说缺少密钥。我认为它缺少路径中的一个键,但我不知道如何设置它。

require 'rails_helper'

RSpec.describe 'maintenance_request_forms/new.html.haml', type: :view do
  before do
    assign(:form, FactoryGirl.build(:maintenance_request_form))
  end

  it 'show the submit button' do  
    render

    expect(rendered).to match /Submit Request/
  end
end

所以有人知道在视图规范中设置url参数的方法吗?谢谢!

修改

我被告知此问题可能与另一个问题重复,但在编写此问题之前我已经看到了其他问题。可悲的是,这个问题的解决方案都没有帮助。另一个问题的答案是将问题代码提取到帮助器中,然后进行单元测试。与尝试在渲染rails路径方法中设置params时遇到的问题大不相同。

结束此问题

我在另一个问题上发布了另一种设置参数的方法,并投票支持这个问题。

1 个答案:

答案 0 :(得分:1)

在挖掘RSpec源代码后,我终于想通了!您实际上可以使用:

设置路径参数
controller.request.path_parameters[:some_param] = 'a value'

设置参数后,我需要为我的规范开始传递的路径。 :)我真的不确定这是否是最佳解决方案,但解决方案似乎相当简单。

谢谢!

这是我的规范现在的样子:

require 'rails_helper'

RSpec.describe 'maintenance_request_forms/new.html.haml', type: :view do
  before do
    assign(:form, FactoryGirl.build(:maintenance_request_form))
    controller.request.path_parameters[:request_form_id] = 1
  end

  it 'show the submit button' do  
    render

    expect(rendered).to match /Submit Request/
  end
end