Pav*_*vel 47 ruby rspec ruby-on-rails ruby-on-rails-3
我想根据某些条件测试渲染特定的部分.
例如,在模型显示操作视图中,show.html.erb我有:
<% if condition1 %>
<%= render :partial => "partial1" %>
<% else %>
<%= render :partial => "partial1" %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
我试过了:
response.should render_template("partial_name")
Run Code Online (Sandbox Code Playgroud)
但它告诉它呈现"显示"模板
期待<"partial1">但使用<"model/show,layouts/application">进行渲染
我做错了什么?
Ris*_*ogi 67
也试试这个
response.should render_template(:partial => 'partial_name')
swi*_*osz 28
最新的rspec版本建议使用expect语法而不是should:
expect(response).to render_template(partial: 'partial_name')
Run Code Online (Sandbox Code Playgroud)
如果要在控制器中进行测试,则应执行以下操作:
RSpec.describe Users::RegistrationsController, type: :controller do
describe "GET #new" do
render_views
it "render customer partial" do
get :new
expect(response).to render_template :new
expect(response).to render_template(partial: '_new_customer')
end
end
end
Run Code Online (Sandbox Code Playgroud)
注意,我们需要render_views作为文档中报告的内容。
这是将测试是否呈现“ _new_customer”部分的行:
expect(response).to render_template(partial: '_new_customer')
Run Code Online (Sandbox Code Playgroud)
您需要提供带有下划线的部分名称。
也要小心,因为在您的代码中IF和ELSE语句正在渲染同一件事。