【问题标题】:How do I test a nested resource view in RSpec using Rails 4.2?如何使用 Rails 4.2 在 RSpec 中测试嵌套资源视图?
【发布时间】:2015-06-23 17:47:44
【问题描述】:

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

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 path 方法时尝试设置参数时遇到的问题大不相同。

结束这个问题

我发布了在另一个问题上设置参数的替代方法,并投票决定关闭这个问题。

【问题讨论】:

  • 嗨!是的,它看起来有点相似,但这些解决方案对我不起作用。 :(
  • 如果人们仍然认为这个问题是重复的,我是否应该在另一个问题上发布我的答案然后删除这个问题?

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


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    相关资源
    最近更新 更多