我正在尝试测试具有嵌套资源路径的视图但测试仍然失败并且说缺少密钥。我认为它缺少路径中的一个键,但我不知道如何设置它。
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时遇到的问题大不相同。
结束此问题
我在另一个问题上发布了另一种设置参数的方法,并投票支持这个问题。
答案 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