50 votes

Comment tester le rendu d'un partiel avec RSpec

Je veux tester le rendu d'un partiel particulier selon certaines conditions.

Par exemple, dans la vue d'action d'affichage du modèle show.html.erb j'ai :

 <% if condition1 %>
 <%=  render :partial => "partial1" %>
<% else %>
 <%=  render :partial => "partial1" %>
<% end %>

J'ai essayé:

 response.should render_template("partial_name")

mais il dit qu'il a rendu le modèle "show"

attend <"partial1"> mais rendu avec <"model/show, mises en page/application">

Qu'est ce que je fais mal?

71voto

Rishav Rastogi Points 12025

Essayez aussi ceci

 response.should render_template(:partial => 'partial_name')

32voto

wilgosz.pl Points 60

La dernière version de rspec suggère d'utiliser la expect plutôt que should :

 expect(response).to render_template(partial: 'partial_name')

1voto

user2238766 Points 11

Si vous utilisez des contrôleurs rspec

 expect(response).to render_template(partial: 'home/_sector_performance')

1voto

Dende Points 445

Vous pouvez également tester si votre contrôleur a déduit l'action requise.

 require "spec_helper"

describe "model_name/new.html.erb" do
 it "infers the controller path" do
  expect(controller.request.path_parameters["action"]).to eq("new")
 end
end

Les docs sont ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X