如何使用RSpectesting渲染部分
我想根据一些条件testing渲染一个特定的部分。
例如,在模型显示动作视图show.html.erb我有: 
 <% if condition1 %> <%= render :partial => "partial1" %> <% else %> <%= render :partial => "partial1" %> <% end %> 
我试过了:
 response.should render_template("partial_name") 
但它告诉它呈现“显示”模板
期望<“partial1”>但使用<“model / show,layouts / application”>进行渲染
我做错了什么?
也试试这个
response.should render_template(:partial =>'partial_name')
 最新的rspec版本build议使用expect语法,而不是should : 
 expect(response).to render_template(partial: 'partial_name') 
如果你正在控制器内testing,你应该这样做:
 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 
请注意,我们需要将render_views报告为文档 。
这是testing是否呈现“_new_customer”部分的行:
 expect(response).to render_template(partial: '_new_customer') 
您需要提供具有初始下划线的部分的名称。
另外要小心,因为在你的代码中,IF和ELSE语句呈现相同的东西。
而不是上面提到的解决scheme,你可以select检查部分呈现的html是否存在。 例如
 response.body.should have_tag("div#foo")